CREATE PROCEDURE s_CollectOrder
@ordername varchar(100)
AS
SELECT *
FROM TABle2
where cOrderId in (@ordername)
其中字段 cOrderId为字符型,意思是订单号,格式为DN001,DN002....
在执行时如何给@ordername赋值呢?
我试过这样 exec s_CollectOrder'DN001,DN003',没有任何结果。
究竟该怎么赋值呢?
@ordername varchar(100)
AS
SELECT *
FROM TABle2
where cOrderId in (@ordername)
其中字段 cOrderId为字符型,意思是订单号,格式为DN001,DN002....
在执行时如何给@ordername赋值呢?
我试过这样 exec s_CollectOrder'DN001,DN003',没有任何结果。
究竟该怎么赋值呢?
@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
--》
exec (@sql)
@ordername varchar(100)
AS
SELECT *
FROM TABle2
where cOrderId in (RTRIM(@ordername)) -- 去一下空格吧前台调用里这样:
sqlcmd.parameters["@yourparam"].value = yourvalue;
to brightheroes(闭关|那'剑的风情)
你写的那段代码 在查询分析器里该怎么调用执行,我是这样执行的exec s_CollectOrder'DN001,DN006'但是也没有显示任何结果啊。数据库里明明有数据。
@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'
我这样做了,但是总提示:
服务器: 消息 2812,级别 16,状态 62,行 14
未能找到存储过程 'SELECT *
FROM TABle2 where cOrderId in (dnDN001,DN003)'。
要改成 exec (@sql)才可以
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;
功能大部分已经实现了,现在还后一个下问题,就是当字段cOrderId值为 001,002,003...时,执行exec gg '001,005' 可以有正确的输出结果,但是当我把字段值改为DN001,DN002...时再执行exec gg 'DN001,DN005' 就会报错如下:
服务器: 消息 245,级别 16,状态 1,行 1
将 varchar 值 'DN001' 转换为数据类型为 int 的列时发生语法错误。
但是cOrderId是varchar型的呀,为什么呢?