CREATE PROCEDURE s_CollectOrder
@ordername varchar(100)
 AS
SELECT *
FROM TABle2
where cOrderId in (@ordername)
其中字段  cOrderId为字符型,意思是订单号,格式为DN001,DN002....
在执行时如何给@ordername赋值呢?
我试过这样 exec s_CollectOrder'DN001,DN003',没有任何结果。
究竟该怎么赋值呢?

解决方案 »

  1.   

    CREATE PROCEDURE s_CollectOrder
    @ordername varchar(100)
     AS
    SELECT *
    FROM TABle2
    where cOrderId in (@ordername)--->CREATE PROCEDURE s_CollectOrder
    @ordername varchar(100)
     ASdeclare @sql varchar(8000)set @sql = 'SELECT *
    FROM TABle2'if @ordername <> ''
    set @sql = @sql + 
     ' where cOrderId in (' + @ordername + ')'exec @sql
      

  2.   

    exec @sql
    --》
    exec (@sql)
      

  3.   

    exec s_CollectOrder '''DN001'',''DN003'''
      

  4.   

    set @ordername = 'xxxxxxx'
      

  5.   

    me.dataApter.sqlCommond.paramars.item("@aa").value="12334"
      

  6.   

    CREATE PROCEDURE s_CollectOrder
    @ordername varchar(100)
     AS
    SELECT *
    FROM TABle2
    where cOrderId in (RTRIM(@ordername))    -- 去一下空格吧前台调用里这样:
    sqlcmd.parameters["@yourparam"].value = yourvalue;
      

  7.   

    ???我得意思是(@ordername如果包含多个订单号该怎么写,
    to brightheroes(闭关|那'剑的风情) 
       你写的那段代码 在查询分析器里该怎么调用执行,我是这样执行的exec       s_CollectOrder'DN001,DN006'但是也没有显示任何结果啊。数据库里明明有数据。
      

  8.   

    to Greenhander(安安) 是在页面上呀
      

  9.   

    首先去查询分析器里面这样执行ALTER PROCEDURE s_CollectOrder
    @ordername varchar(100)
     ASdeclare @sql varchar(8000)set @sql = 'SELECT *
    FROM TABle2'if @ordername <> ''
    set @sql = @sql + 
     ' where cOrderId in (' + @ordername + ')'exec @sql
    然后执行exec s_CollectOrder'DN001,DN003'
      

  10.   

    to : brightheroes(闭关|那一剑的风情) 
    我这样做了,但是总提示:
    服务器: 消息 2812,级别 16,状态 62,行 14
    未能找到存储过程 'SELECT *
    FROM TABle2 where cOrderId in (dnDN001,DN003)'。
      

  11.   

    exec @sql
    要改成 exec (@sql)才可以
      

  12.   

    SqlParameter[]  parameters = {
     new System.Data.SqlClient.SqlParameter("@ID", System.Data.SqlDbType.Int, 4, "ID"),
     new System.Data.SqlClient.SqlParameter("@ProductID", System.Data.SqlDbType.Int, 4, "ProductID"),
     };

    parameters[0].Direction = ParameterDirection.Output;
    parameters[1].Value = po.ProductID;
      

  13.   

    to : brightheroes(闭关|那一剑的风情) 
    功能大部分已经实现了,现在还后一个下问题,就是当字段cOrderId值为 001,002,003...时,执行exec gg '001,005' 可以有正确的输出结果,但是当我把字段值改为DN001,DN002...时再执行exec gg 'DN001,DN005' 就会报错如下:
    服务器: 消息 245,级别 16,状态 1,行 1
    将 varchar 值 'DN001' 转换为数据类型为 int 的列时发生语法错误。
    但是cOrderId是varchar型的呀,为什么呢?