在存储过程中用到exec,exec(@s1+@s+N'
FROM table1 
GROUP BY ID) B on B.cID=SS.cID and orderid=@orderid其中@orderid是存储过程定义的参数。在执行exec时,系统提示没有定义变量@orderid

解决方案 »

  1.   

    exec(@s1+@s+N' 
    FROM table1 
    GROUP BY ID) B on B.cID=SS.cID and orderid='+ltrim(@orderid ))
      

  2.   

    问题解决,谢谢happy兄,为什么要加LTRIM呢?
      

  3.   


    一般@orderid应该不是char,所以加LTRIM转换成字符串才可能和字符串+
      

  4.   

    返回删除前导空格后的字符表达式。 语法 LTRIM ( character_expression )  参数 
    character_expression 
    字符或二进制数据的表达式。Character_expression 参数必须为可隐式转换为 nvarchar 或 ntext 数据类型。 返回值 
    nvarchar 或 ntext 示例 
    在下面的示例中,将删除在 MyCustomers 表中所列出的客户名称中的前导空格: 复制代码
    CREATE TABLE MyCustomers (CustID INTEGER IDENTITY (100,1) PRIMARY KEY, CompanyName nvarchar (50))
    INSERT INTO MyCustomers (CompanyName) VALUES ('    A. Datum Corporation')
    SELECT CustID, LTRIM(CompanyName)
    FROM MyCustomers
      

  5.   


    枪兄一般char的空格在后面啊  为什么不加 rtrim而加ltrim呢?
      

  6.   


    显然我的目的是转int -> char,所以无所谓rtrim or ltrim ,因为它们都是返回字符表达式
      

  7.   

    多谢 
    学习ing