【DM版本】DM8
【问题描述】*:我们知道Sql Server的参数变量前面都要带“@”符,为了把Sql Server的存储过程转到达梦来,又要保持两者阅读的一致性,在达梦的存储过程中也保留@(另外一个就是保留参数的大小写),因此我把参数加“@param”起来,如下过程
CREATE OR REPLACE PROCEDURE "SYSDATA"."KP_Test"
(
"@inStr" out in varchar(100)
)
AS
BEGIN
set "@inStr"=cast(getdate() as varchar(100));
END;
直接调用:
或
declare
"@inStr" varchar(100)='123456';
begin
call "SYSDATA"."KP_Test"("@inStr");
end;
在中调用
DmParameter[] DmParameters = {
new DmParameter("@instr",DmDbType.VarChar,100)
};
instr = DateTime.Now.Second.ToString();
DmParameters[0].Direction = ParameterDirection.InputOutput;
DmParameters[0].Value = instr;
try
{
DBUtility.DbHelperSQL.RunProcedure("\"KP_Test\"", DmParameters);
}
catch (Exception ex)
{
return false;
}
mc = DmParameters[0].Value.ToString().Trim();
调用会出错,提示:{“第 1 行, 第 15 列[@]附近出现错误: \n语法分析出错”}
如果把参数原过程和C#的调用把“@”去掉,一切都正常。
现在我需要的是参数要保留“@”该如何解决?
定义parameter名称的时候可以尝试以"@instr"试一下