gpt4 book ai didi

c# - 从 C# 调用 Oracle 中的存储过程

转载 作者:行者123 更新时间:2023-11-30 17:11:50 26 4
gpt4 key购买 nike

我有一个带有文本框的页面,该文本框通过 Oracle 中的存储过程传递值。过程发生了变化,现在有 2 个参数,一个用于输入值,另一个用于返回整数值。

这是 Oracle 程序:

procedure UnoxDataFix(p_shpmt_nbr in pkms.asn_hdr.shpmt_nbr%type, retval out integer) is
begin
retval:=0;
for r in (
-- simple select statement
)
loop
if(r.stat_code = 10 and r.whse_xfer_flag = 'Y')
then
update pkms.asn_dtl ad
-- simple set statement
update pkms.asn_hdr ah
-- simple set statement
where ah.shpmt_nbr = p_shpmt_nbr
RETURNING 1 into retval;
commit;
end if;
end loop;
end;

这是我的核心 C# 代码:

this.oraServer.ExecuteNonQuery(this.connectionString, CommandType.Text, "begin INTEGRATION.UnoxDataFix('" + input + "'); end;");

连接字符串有效。这只是给出错误的实际过程。 “输入”值是发送到过程的实际值。但是为了将“retval”返回到站点,我不确定该怎么做。我已经尽我所能尝试谷歌搜索,但没有帮助。我有点慢,所以欢迎大家提出意见。 :)

最佳答案

因为程序现在需要 2 个参数,所以您需要提供 2 个参数而不仅仅是输入参数。另外,我更喜欢使用绑定(bind)变量来防止 sql 注入(inject)。 (是的,您也可以为 OUT 参数使用绑定(bind)变量)。

begin INTEGRATION.UnoxDataFix(:input, :retval); end;

我不熟悉 C# 的细节,所以我无法帮助您了解用于插入和检索值的确切方法。

附带说明一下,这是什么样的命名约定?你的目标是不可读性吗? :)

pkms.asn_hdr.shpmt_nbr

关于c# - 从 C# 调用 Oracle 中的存储过程,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11157690/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com