3

所以我试图从我的 C# .NET 应用程序中调用一个 Oracle 存储过程。我能找到的大多数在线参考资料都建议“使用 System.Data.OracleClient;”,但 .Net 3.5 无法识别该命名空间,所以我改用“Oracle.DataAccess.Client”。

下面是我的代码的一些解释,之前设置和测试过的 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.

从命令中删除“exec”会产生此错误:

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

有任何想法吗?我很乐意澄清任何事情

这是我第一次在 stackoverflow.com 上发帖,也是我在这份工作的最后一周,所以我感谢您的理解和相对匆忙的解决这个问题

4

1 回答 1

7

我认为你需要这样的东西

command.Connection = myConn;
command.CommandType = CommandType.StoredProcedure;  
command.CommandText = "mySchema.myProc";  // the proc name   
command.Parameters.Add(/* TODO: Add parameter here */); 
command.ExecuteNonQuery();
于 2011-03-21T14:07:20.437 回答