gpt4 book ai didi

C# 和甲骨文 : Output parameter is getting truncated

转载 作者:行者123 更新时间:2023-11-30 22:56:34 28 4
gpt4 key购买 nike

我在使用 C# 和 Oracle DB 时遇到了另一个问题。所以我执行了一个存储过程并取回了 out 参数,一切正常,但最后,我的输出数据被截断了一半。

create or replace PROCEDURE TEST(MyVar IN VARCHAR2, return_var OUT VARCHAR2) AS 
BEGIN
DECLARE newId number;
BEGIN
SELECT (NVL(MAX(ID),0) + 1)
INTO newId
FROM MY_TABLE;

INSERT INTO MY_TABLE
VALUES (newId, sysdate, 'BEL', '3' , MyVar, 'var2', 'AZ', 'TR', 'FG', 'QW', 'XC', 'IO', '1', '0', sysdate, 'TT', 'BB', 'OO', '8', '9', sysdate, '5', '6');
END;

return_var := 'TESTRETURN';
END TEST;

这是 C# 代码:

OracleParameter out_param = oCommand.CreateParameter();
out_param.ParameterName = "return_code";
out_param.Direction = ParameterDirection.Output;
out_param.DbType = DbType.String;
out_param.Size = 300;
oCommand.Parameters.Add(out_param);
oCommand.ExecuteNonQuery();
Results = out_param.Value.ToString();

我得到这个:TESTR 而不是 TESTRETURN

如果我在 Oracle 过程 TESTRETURN 中替换为更大的东西,例如“THISCHAINHAVE20CARSX”,我会得到“THISCHAINH”

如果我只用两个字母替换,我就只有一个..

最佳答案

VARCHAR2 替换为 CHAR 时有效

CREATE OR REPLACE PROCEDURE TEST(var1 IN VARCHAR2, return_code OUT VARCHAR2)

通过

CREATE OR REPLACE PROCEDURE TEST(var1 IN VARCHAR2, return_code OUT CHAR)

所以来自 this topic 的错误也适用于 System.Data.OracleClient.dll 程序集。

关于C# 和甲骨文 : Output parameter is getting truncated,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54348583/

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