注册

求救:C#调用存储过程遇到的(带有特殊字符@)参数问题?

思特 2022/12/06 1759 1

【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#的调用把“@”去掉,一切都正常。

现在我需要的是参数要保留“@”该如何解决?

回答 0
暂无回答
扫一扫
联系客服