在另一贴已说明在字符串里声明@state 与@storage或定义输出,N'@storage int output'

解决方案 »

  1.   

    exec外部定义的变量,不能在exec内部使用.因为内外部语句编译时不在同一空间内.为了解决此问题,ms提供了sp_executeSQL接口来处理这种问题,将变量值以参数方式传递.
    即,即使外部定义了 @state
    内部也定义了 @state,他们指向不同的内存空间.做法是使用sp_executeSQL,roy_88已经说了,我不再累赘了.
      

  2.   


    INSERT INTO OUTPUTDETAIL(OUTPUTORDERID,ORDERBOOKID,BOOKNAME,BOOKPRICE,PARTCOUNT,ORDERNUMBER,BOOKWEIGHT,POSITIONID,CHINASORT,STOCKDISCOUNT,INSIDEDISCOUNT,EXTERNALDISCOUNT,STORAGE) 
            SELECT @OUTPUTORDERID,@ORDERBOOKID,BOOKNAME,BOOKPRICE,PARTCOUNT,@ORDERNUMBER,BOOKWEIGHT,POSITIONID,CHINASORT,STOCKDISCOUNT,INSIDEDISCOUNT,EXTERNALDISCOUNT,STORAGE FROM X_VW_BookDetail 
            WHERE ORDERBOOKID=@ORDERBOOKID AND FATHERID=@FATHERID请问这一句中的变量 例如我传入的@OUTPUTORDERID='C2255'
    结果编程以下形式后,提示找不到列名“C2255”,这一句如何写了?
    INSERT INTO OUTPUTDETAIL(OUTPUTORDERID,ORDERBOOKID,BOOKNAME,BOOKPRICE,PARTCOUNT,ORDERNUMBER,BOOKWEIGHT,POSITIONID,CHINASORT,STOCKDISCOUNT,INSIDEDISCOUNT,EXTERNALDISCOUNT,STORAGE) 
            SELECT '+@OutputOrderID+','+STR(@ORDERBOOKID)+',BOOKNAME,BOOKPRICE,PARTCOUNT,'+STR(@ORDERNUMBER)+',BOOKWEIGHT,POSITIONID,CHINASORT,STOCKDISCOUNT,INSIDEDISCOUNT,EXTERNALDISCOUNT,STORAGE FROM X_VW_BookDetail 
            WHERE ORDERBOOKID='+STR(@ORDERBOOKID)+' AND FATHERID='+STR(@FATHERID)+'
      

  3.   

    列名,你不需要以参数传进去,而应该是拼字串.
    即,你生成的语句应该是INSERT INTO OUTPUTDETAIL...
    SELECT C2255,.... FROM
       where orderbookid=...
      

  4.   

    感谢 roy_88 fcuandy 两位的帮助