Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/.net/23.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 从C运行Oracle存储过程#_C#_.net_Oracle_Ora 06550 - Fatal编程技术网

C# 从C运行Oracle存储过程#

C# 从C运行Oracle存储过程#,c#,.net,oracle,ora-06550,C#,.net,Oracle,Ora 06550,初级问题: 我在Oracle数据库中有一个存储过程(只是一个过程,没有任何包): CREATE OR REPLACE procedure FII_DBO.CLEAR_UNIT_TEST_PRODUCT IS BEGIN ... END CLEAR_UNIT_TEST_PRODUCT; 在蟾蜍身上也很有效。但是,当我试图从C#运行它时,它会抱怨: System.Data.OracleClient.OracleException: ORA-06550: line 1, column 7: PLS

初级问题: 我在Oracle数据库中有一个存储过程(只是一个过程,没有任何包):

CREATE OR REPLACE procedure FII_DBO.CLEAR_UNIT_TEST_PRODUCT
IS
BEGIN
 ...
END CLEAR_UNIT_TEST_PRODUCT;
在蟾蜍身上也很有效。但是,当我试图从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#代码:


是否在procedureName变量中包含包名


i、 e.将过程重命名为“
FII\u DBO.CLEAR\u UNIT\u TEST\u PRODUCT
”,而不仅仅是“
CLEAR\u UNIT\u TEST\u PRODUCT
”?

您的过程似乎是在另一个模式中创建的

发行

就在连接之后

我记得提供者在调用存储过程时有一些bug

命令文本设置为

BEGIN FII_DBO.CLEAR_UNIT_TEST_PRODUCT(); END;
CommandType
Text

您还可以尝试更改存储过程名称的大小写,如:

fii_dbo.clear_unit_test_product

,我记得这个案例也很重要。

请检查您的.NET应用程序所连接的Oracle用户是否具有执行存储过程的权限。

找到它,错误消息有点误导。我是以另一个没有适当访问权限的用户的身份执行它的。这就成功了:

grant execute on FII_DBO.CLEAR_UNIT_TEST_PRODUCT to FII_USER;

是的,也试过了:标识符'FII_DBO.CLEAR_UNIT_TEST_PRODUCT'必须声明是的,错误消息没有什么帮助,但我想这样做是出于安全目的。如果用户不能访问存储过程,那么数据库甚至不会承认它的存在。@Ian Nelson,@Grzenio-我也有类似的问题。除了我使用的是
ExecuteReader()
之外,相同的错误和C代码看起来几乎相同。我不明白这怎么可能是权限,因为我连接的用户ID也是模式和特定过程的所有者。可能发生这种情况的任何其他原因?
fii_dbo.clear_unit_test_product
grant execute on FII_DBO.CLEAR_UNIT_TEST_PRODUCT to FII_USER;