首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >PowerShell执行Oracle8i存储过程错误:参数的错误数目或类型

PowerShell执行Oracle8i存储过程错误:参数的错误数目或类型
EN

Stack Overflow用户
提问于 2016-03-15 16:41:10
回答 2查看 1.1K关注 0票数 0

我的PowerShell 2.0代码:

代码语言:javascript
复制
$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代码:

代码语言:javascript
复制
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。有什么想法吗?

编辑:我可以执行没有输入参数的存储过程,并返回没有错误的游标。

EN

回答 2

Stack Overflow用户

发布于 2016-03-15 17:00:46

您的过程没有特定声明的out参数。或者,如果您使用的是函数,则不会返回任何内容。

尝试将签名更改为

代码语言:javascript
复制
PROCEDURE ALAN_TEST(P_INPUT OUT VARCHAR2);

在与Oracle交互时,很多时候,如果您不确定是否会接收一条记录或多条记录,最好的方法是返回一个可以保存一个或多个记录的sys_refcursor。

代码语言:javascript
复制
PROCEDURE ALAN_TEST(P_INPUT IN VARCHAR2, p_cursor out sys_refcursor);
票数 0
EN

Stack Overflow用户

发布于 2016-03-15 17:26:35

我发布的PowerShell代码并不完全准确,我试图将OracleCommand和OracleConnection对象作为参数传递给PowerShell函数。我以为它们是在我调用PS函数时初始化的,但是它们没有被初始化。来自PowerShell的附加错误消息是一个无效的方法调用错误,我忽略了这一点。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/36017155

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档