从.net执行Oracle存储过程

本文关键字:存储过程 Oracle 执行 net | 更新日期: 2023-09-27 18:12:21

我正在尝试运行这个c#代码

string sql = @"EXECUTE GETEMPLOYEES1()";
OracleCommand cmd = new OracleCommand(sql, cnn);
cmd.CommandType = CommandType.Text;
cmd.ExecuteNonQuery();

但是我一直得到

无效SQL错误

我的存储过程代码非常简单

CREATE OR REPLACE PROCEDURE GETEMPLOYEES1 
AS 
BEGIN
    DBMS_OUTPUT.PUT_LINE('Welcome to FYICenter!'); 
END;  

我能够通过使用CommandType = StoredProcedure正常运行它,但我需要执行一些由用户输入的动态代码,这对我来说是至关重要的,通过CommandType = Text

从.net执行Oracle存储过程

EXECUTE为SQL*Plus命令。使用

CALL GETEMPLOYEES1()

BEGIN GETEMPLOYEES1(); END;

如果您选择命令类型StoredProcedure,库将在内部为您添加BEGIN ... END;

CALL在过程无参数时也需要空括号

尝试用null;替换DBMS_OUTPUT.PUT_LINE('Welcome to FYICenter!');,看看是否有任何不同。我假设在连接上下文中没有意义尝试输出文本,没有控制台。