2010-07-06 3 views
0

외부 저장 프로시 듀어 (RPG 프로그램 호출)를 호출하려합니다. 여기DB2 외부 저장 프로시 듀어 실행시 문제점

"Exception Details: IBM.Data.DB2.iSeries.iDB2SQLErrorException: SQL0104 Token @SSN was not valid. Valid tokens: :."

내 코드입니다 : 내가 무슨 일이 일어나고 또는 왜 내가 위의 오류를 얻고 무엇을 알아낼 수 없습니다

using (iDB2Connection conn = new iDB2Connection(_CONNSTRING)) 
{ 
    conn.Open(); 

    string sqlStatement = "MPRLIB.SIGNTIMESHEET (@SSN, @SIGNATURE, @WORKSTATION, @TOTALHOURS, @COMMENT)"; 
    //string sqlStatement = "MPRLIB.SIGNTIMESHEET (?, ?, ?, ?, ?)"; 

    iDB2Command cmd = conn.CreateCommand(); 
    cmd.CommandType = CommandType.StoredProcedure; 
    cmd.CommandText = sqlStatement; 
    cmd.Parameters.Add("@SSN", timesheet.EmployeeUniqueKey.ToString("0000000000")); 
    cmd.Parameters.Add("@SIGNATURE", timesheet.EmployeeTypedName); 
    cmd.Parameters.Add("@WORKSTATION", timesheet.EmployeeSignedComputer); 
    cmd.Parameters.Add("@TOTALHOURS", GetJobHoursTotal(timesheet.Id).ToString("00000.000").Replace(".", "")); 
    cmd.Parameters.Add("@COMMENT", timesheet.EmployeeComments); 

    cmd.ExecuteNonQuery(); 
    conn.Close(); 
} 

가 나는 다음과 같은 오류가 계속. 내 연결 문자열은 다음과 같습니다.

private const string _CONNSTRING = "DataSource=192.168.50.200;DefaultCollection=QMFILES;Naming=sql;UserID=XXX;Password=XXX;"; 

라이브러리 목록 문제 일 수 있습니까? 이 프로그램은 라이브러리 목록에있는 파일 하나를 참조합니다. 어떤 제안? 이 같은

답변

3

시도 : 문제의 SQLStatement가 PARMS을 제외해야했다

using (var conn = new iDB2Connection(_CONNSTRING)) 
using (var cmd = conn.CreateCommand()) 
{ 
    conn.Open(); 

    cmd.CommandType = CommandType.StoredProcedure; 
    cmd.CommandText = "MPRLIB.SIGNTIMESHEET"; 
    cmd.Parameters.Add("@SSN", timesheet.EmployeeUniqueKey.ToString("0000000000")); 
    cmd.Parameters.Add("@SIGNATURE", timesheet.EmployeeTypedName); 
    cmd.Parameters.Add("@WORKSTATION", timesheet.EmployeeSignedComputer); 
    cmd.Parameters.Add("@TOTALHOURS", GetJobHoursTotal(timesheet.Id).ToString("00000.000").Replace(".", "")); 
    cmd.Parameters.Add("@COMMENT", timesheet.EmployeeComments); 

    cmd.ExecuteNonQuery(); 
} 
+0

. 귀하의 게시물은 올바른 방향으로 나를 잡았습니다. 도와 줘서 고마워! –

+1

또한이 게시물을 확인하실 수 있습니다 : http://www.netsplore.com/PublicPortal/blog.aspx?EntryID=30 –

+1

참고로, 당신이 그것을 사용하여 포장해도 연결을 닫을 수도 있습니다 IBM에서 제공 한 DB2 .NET 어셈블리의 특정 버전은 사용 블록 내에 포함 된 경우에도 제대로 연결을 닫지 않았습니다. – kd7

관련 문제