我的PowerShell 2.0代码:
$Cmd = New-Object System.Data.OracleClient.OracleCommand
$Conn = New-Object System.Data.OracleClient.OracleConnection
$Conn.Open()
$Cmd.Connection = $Conn
$Cmd.CommandType = [System.Data.CommandType]::StoredProcedure
$Cmd.CommandText = "WEAMFG.PF_MERCH_OLY_PKG.ALAN_TEST"
$Cmd.Parameters.Add("P_INPUT", [System.Data.OracleClient.OracleType]::VarChar)
$Cmd.Parameters["P_INPUT"].Value = "1"
$Cmd.ExecuteNonQuery()
$Conn.Close()我的Pl/Sql代码:
PROCEDURE ALAN_TEST(P_INPUT VARCHAR2)
IS
vAnswer VARCHAR2(4000);
BEGIN
SELECT answer
INTO vAnswer
FROM weamfg.ASKTOM
WHERE ROWNUM = 1;
END ALAN_TEST;执行存储过程会引发错误消息:
使用"0“参数调用"ExecuteNonQuery”的异常:"ORA-06550:第1行,第7列:请-00306:调用'ALAN_TEST‘ORA-06550:第1行,第7列:忽略PL/SQL:语句的错误数目或参数类型。
我在Windows机器上使用.NET 3.5。有什么想法吗?
编辑:我可以执行没有输入参数的存储过程,并返回没有错误的游标。
发布于 2016-03-15 17:00:46
您的过程没有特定声明的out参数。或者,如果您使用的是函数,则不会返回任何内容。
尝试将签名更改为
PROCEDURE ALAN_TEST(P_INPUT OUT VARCHAR2);在与Oracle交互时,很多时候,如果您不确定是否会接收一条记录或多条记录,最好的方法是返回一个可以保存一个或多个记录的sys_refcursor。
PROCEDURE ALAN_TEST(P_INPUT IN VARCHAR2, p_cursor out sys_refcursor);发布于 2016-03-15 17:26:35
我发布的PowerShell代码并不完全准确,我试图将OracleCommand和OracleConnection对象作为参数传递给PowerShell函数。我以为它们是在我调用PS函数时初始化的,但是它们没有被初始化。来自PowerShell的附加错误消息是一个无效的方法调用错误,我忽略了这一点。
https://stackoverflow.com/questions/36017155
复制相似问题