从 C# 运行 Oracle 存储过程
一个初学者的问题: 我在 Oracle 数据库中有一个存储过程(只是一个过程,没有任何包):
CREATE OR REPLACE procedure FII_DBO.CLEAR_UNIT_TEST_PRODUCT
IS
BEGIN
...
END CLEAR_UNIT_TEST_PRODUCT;
它在 TOAD 中运行良好。 但是,当我尝试从 C# 运行它时,它会抱怨:
System.Data.OracleClient.OracleException: ORA-06550: line 1, column 7:
PLS-00201: identifier 'CLEAR_UNIT_TEST_PRODUCT' must be declared
ORA-06550: line 1, column 7:
PL/SQL: Statement ignored
相关的 C# 代码:
Command = new OracleCommand();
Command.CommandText = procedureName;
Command.CommandType = CommandType.StoredProcedure;
Command.Connection = connection;
Command.ExecuteNonQuery();
A beginner question:
I have a stored proc (just a procedure, without any packages) in the Oracle Database:
CREATE OR REPLACE procedure FII_DBO.CLEAR_UNIT_TEST_PRODUCT
IS
BEGIN
...
END CLEAR_UNIT_TEST_PRODUCT;
and it works fine in TOAD. However, when I try to run it from C# it complains:
System.Data.OracleClient.OracleException: ORA-06550: line 1, column 7:
PLS-00201: identifier 'CLEAR_UNIT_TEST_PRODUCT' must be declared
ORA-06550: line 1, column 7:
PL/SQL: Statement ignored
relevant C# code:
Command = new OracleCommand();
Command.CommandText = procedureName;
Command.CommandType = CommandType.StoredProcedure;
Command.Connection = connection;
Command.ExecuteNonQuery();
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(4)
检查 .NET 应用程序所连接的 Oracle 用户是否具有执行存储过程的权限。
Check that the Oracle user that your .NET application is connecting with has permissions to execute the stored procedure.
找到了,错误信息有点误导。 我以不同的用户身份执行它,该用户没有适当的访问权限。 这做到了这一点:
Found it, the error message was a bit misleading. I was executing it as a different user, who didn't have the proper access rights. This did the trick:
您是否在 procedureName 变量中包含包名称?
即将 procedureName 设置为“
FII_DBO.CLEAR_UNIT_TEST_PRODUCT
”,而不仅仅是“CLEAR_UNIT_TEST_PRODUCT
”?Are you including the package name in the procedureName variable?
i.e. setting procedureName to "
FII_DBO.CLEAR_UNIT_TEST_PRODUCT
", not just "CLEAR_UNIT_TEST_PRODUCT
"?您的过程似乎是在另一个架构中创建的。
出现问题
连接后立即
。 我记得提供商在调用存储过程时存在一些错误。
将您的
CommandText
设置为CommandType
为Text
另外,您也可以尝试更改存储过程名称的大小写,例如:
,我记得案例也很重要。
Your procedure seems to be created in another schema.
Issue
right after connecting.
I recall the provider has some bugs with calling stored procedures.
Set your
CommandText
toand
CommandType
toText
Also you may try to change the case of you stored procedure name, like:
, I recall that the case matters too.