Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/drupal/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 如何使用SQLAnywhere 10从ADO.NET 2.0中的存储过程中获取LongVarchar out param?_C#_Stored Procedures_Ado.net_Sqlanywhere - Fatal编程技术网

C# 如何使用SQLAnywhere 10从ADO.NET 2.0中的存储过程中获取LongVarchar out param?

C# 如何使用SQLAnywhere 10从ADO.NET 2.0中的存储过程中获取LongVarchar out param?,c#,stored-procedures,ado.net,sqlanywhere,C#,Stored Procedures,Ado.net,Sqlanywhere,我有存储过程“up\u selfassessment form\u view”,它具有以下参数: in ai_eqidentkey SYSKEY in ai_acidentkey SYSKEY out as_eqcomments TEXT_STRING out as_acexplanation TEXT_STRING -哪些是域对象-SYSKEY是“integer”,TEXT_字符串是“long varchar” 我可以使用以下代码从iSQL调用存储过程fine: create variabl

我有存储过程“up\u selfassessment form\u view”,它具有以下参数:

in ai_eqidentkey SYSKEY
in ai_acidentkey SYSKEY
out as_eqcomments TEXT_STRING
out as_acexplanation TEXT_STRING
-哪些是域对象-SYSKEY是“integer”,TEXT_字符串是“long varchar”

我可以使用以下代码从iSQL调用存储过程fine:

create variable @eqcomments TEXT_STRING;
create variable @acexamples TEXT_STRING;
call up_selfassessform_view (75000146, 3, @eqcomments, @acexamples);
select @eqcomments, @acexamples;
SADataReader reader = cmd.ExecuteReader();
-它从数据库返回正确的值(因此我知道存储过程很好)

我已经在ADO.NET中像这样配置了out参数(到目前为止,它一直用于“整数”、“时间戳”、“varchar(255)”等):

当我运行以下代码时:

create variable @eqcomments TEXT_STRING;
create variable @acexamples TEXT_STRING;
call up_selfassessform_view (75000146, 3, @eqcomments, @acexamples);
select @eqcomments, @acexamples;
SADataReader reader = cmd.ExecuteReader();
我收到以下错误:

Parameter[2]: the Size property has an invalid size of 0.
这(我想)是有道理的

但问题是,我不知道字段的大小(它只是“long varchar”,它没有预定的长度-不像varchar(XXX))

总之,为了好玩,我添加了以下内容:

as_acexplanation.Size = 1000;
上面的错误消失了,但现在当我调用:

as_acexplanation.Value
我得到一个长度为1000的字符串,它只是“\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0…”(\0重复了1000次)

所以我真的被卡住了。。。如果您能帮上忙,我将不胜感激

干杯


Tod T.

您是否尝试过不传递参数数据类型,而让ADO.NET自己计算出来?

您是否尝试过将大小设置为-1

看答案