2011-12-13 3 views
0

vb.net을 통해 oracle 또는 sql에서 저장 함수를 실행해야합니다.vb.net에서 저장 프로 시저 실행

명령 개체를 만들었습니다. 데이터베이스 유형 (오라클 또는 SQL)에 따라 준비 중입니다.

명령 텍스트를 select functionName (?,?,?,?,?)에서 선택하십시오. (Oracle의 경우) 함수의 매개 변수 값 추가

유효하지 않은 매개 변수를 나타내는 작동하지 않는 ExecuteScalar를 수행 중입니다.

ODBC 연결 문자열과 함께 작동합니다. 그러나 ODBC는 64 비트가 아닙니다.

내 요구 사항 : 코드는 런타임에 값을 가져 와서 사용자 정의 저장 프로 시저를 실행해야합니다.

감사 Rupesh

답변

1

귀하의 명령 텍스트는 선택하지 않고 바로 저장 프로 시저의 이름, 당신은 저장 프로 시저 명령 유형을 설정 있는지 확인해야합니다.

http://support.microsoft.com/kb/321718

오라클 :

Dim cmd As New OracleCommand 
cmd.Connection = conn 
cmd.CommandType = CommandType.StoredProcedure 
cmd.CommandText = "OracleSP" 
Dim p1 As OracleParameter 
Dim p2 As OracleParameter 

p1 = cmd.Parameters.Add("Param1", OracleType.NVarChar) 
p1.Value = "Value1" 
p2 = cmd.Parameters.Add("Param2", OracleType.Double) 
p2.Value = 10 

cmd.ExecuteNonQuery() 

SQL 서버 :

cmd.Connection = conn 
    cmd.CommandType = CommandType.StoredProcedure 
    cmd.CommandText = "SqlSP" 
    cmd.Parameters.Add("@Param1", SqlDbType.Int) 
    cmd.ExecuteNonQuery() 

내가하지 않은 나는 오라클에 대해 확실하지 않다 (I 예를 들어,이 링크를 확인하세요 그것이 작동해야한다고 생각하지만) 사용할 수있는 SQL 서버와 함께 :

SqlCommandBuilder.DeriveParameters(cmd) 

을 사용하여 내가했던 것처럼 설정하는 대신 명령에서 SqlParametersCollection을 채 웁니다. MSDN documentation

그런 다음 루프를 반복하고 필요에 따라 값을 설정할 수 있습니다.

+0

감사합니다.하지만이 경우에는 저장 프로 시저를 실행하기 위해 inorder 함수의 매개 변수 이름을 알아야합니다. – Rupesh

+0

deriveParameters에 대한 편집 된 답변 – Jay

관련 문제