2011-03-21 3 views
2

그래서 C# .NET 응용 프로그램에서 Oracle 저장 프로 시저를 호출하려고합니다. 내가 찾을 수있는 대부분의 온라인 참조는 "System.Data.OracleClient;"를 사용하지만 .Net 3.5는 네임 스페이스를 인식하지 못하기 때문에 대신 "Oracle.DataAccess.Client"를 사용하고 있습니다. 여기 "Oracle.DataAccess"(매개 변수 사용)를 사용하여 C#에서 Oracle 저장 프로 시저 호출

는 이전에 설치를, 아래에있는 내 코드의 일부 의역이고 OracleConnection 이미 매개 변수로 채워진 'myConn'라는 테스트 'arg_myArg'(그 중요한 경우이 숫자의 일) :

command.Connection = myConn; 
command.CommandType = CommandType.StoredProcedure; 
command.CommandText = "exec mySchema.myProc(:arg_myArg)" 
command.ExecuteNonQuery(); 

트릭 이 프로시 저는이라는 디자인으로 아무 것도 반환하지 않습니다. 단순히 다른 테이블을 채 웁니다. 나는 위의 코드를 실행하려고 할 때, 나는 마지막 줄에 'OracleException'를 얻을이 오류 제공 :

ORA-06550: line 1, column 13: 
PLS-00103: Encountered the symbol "MYSCHEMA" when expecting one of the following: 

    := . (@ % ; 
The symbol ":=" was substituted for "MYSCHEMA" to continue. 

명령 대신이 오류 제공에서 "간부"를 제거 :

ORA-06550: line 1, column 8: 
PLS-00801: internal error [22503] 
ORA-06550: line 1, column 8: 
PL/SQL: Statement ignored 

아이디어가 있으십니까? 나는이이 일에 stackoverflow.com 및 내 지난 주에 게시 내 처음 아무것도에게

을 명확히 드리겠습니다, 그래서 내가 당신을 생각

+0

Microsoft 고객을 사용할 것을 권합니다. System.Data.OracleClient.dll에 대한 참조를 추가했는지 확인하십시오. – pilotcam

+0

왜 @pilotcam입니까? Microsoft는 MS Oracle 클라이언트 (System.Data.OracleClient)를 감가 상각했으며 ODP (Oracle.DataAccess.Client)를 사용할 것을 권장합니다. http://blogs.msdn.com/b/adonet/archive/2009/06/15/system-data-oracleclient-update.aspx –

답변

6

을이 문제를 파악하여 이해와 상대 서둘러 감사 이 같은 것이 필요할 것입니다.

command.Connection = myConn; 
command.CommandType = CommandType.StoredProcedure; 
command.CommandText = "mySchema.myProc"; // the proc name 
command.Parameters.Add(/* TODO: Add parameter here */); 
command.ExecuteNonQuery(); 
+2

그걸 수정 한 것 같습니다. 미래 정보 검색 자 : 실행하려면 명령에 "exec"를 포함시키지 말고 프로 시저 호출에 매개 변수를 포함시키지 말고 ** 명령 **에 저장되는 oracle 매개 변수를 유지해야합니다 그것의 연결. – KeithA45

+2

@ KeithA45 : 작업 코드를 게시 하시겠습니까? – Greg