如何给存储过程的参数赋值呢??在线等!!!

wupingerHSH 2004-12-13 11:03:54
CREATE PROCEDURE s_CollectOrder
@ordername varchar(100)
AS
SELECT *
FROM TABle2
where cOrderId in (@ordername)
其中字段 cOrderId为字符型,意思是订单号,格式为DN001,DN002....
在执行时如何给@ordername赋值呢?
我试过这样 exec s_CollectOrder'DN001,DN003',没有任何结果。
究竟该怎么赋值呢?
...全文
430 18 打赏 收藏 转发到动态 举报
写回复
用AI写文章
18 条回复
切换为时间正序
请发表友善的回复…
发表回复
wupingerHSH 2004-12-13
  • 打赏
  • 举报
回复
to Greenhander(安安) 是在页面上呀
Greenhander 2004-12-13
  • 打赏
  • 举报
回复
同意楼上,你的存储过程调用是在页面上的吗?
wupingerHSH 2004-12-13
  • 打赏
  • 举报
回复
???我得意思是(@ordername如果包含多个订单号该怎么写,
to brightheroes(闭关|那'剑的风情)
你写的那段代码 在查询分析器里该怎么调用执行,我是这样执行的exec s_CollectOrder'DN001,DN006'但是也没有显示任何结果啊。数据库里明明有数据。
slhuang 2004-12-13
  • 打赏
  • 举报
回复
CREATE PROCEDURE s_CollectOrder
@ordername varchar(100)
AS
SELECT *
FROM TABle2
where cOrderId in (RTRIM(@ordername)) -- 去一下空格吧

前台调用里这样:
sqlcmd.parameters["@yourparam"].value = yourvalue;

brightheroes 2004-12-13
  • 打赏
  • 举报
回复
你的这种情况需要动态sql
YUAN168 2004-12-13
  • 打赏
  • 举报
回复
me.dataApter.sqlCommond.paramars.item("@aa").value="12334"
DADA_dotnet 2004-12-13
  • 打赏
  • 举报
回复
set @ordername = 'xxxxxxx'
wupingerHSH 2004-12-13
  • 打赏
  • 举报
回复
楼上的两位的方法都不行啊??
_甲壳虫 2004-12-13
  • 打赏
  • 举报
回复
exec s_CollectOrder '''DN001'',''DN003'''
brightheroes 2004-12-13
  • 打赏
  • 举报
回复
exec @sql
--》
exec (@sql)
brightheroes 2004-12-13
  • 打赏
  • 举报
回复
CREATE PROCEDURE s_CollectOrder
@ordername varchar(100)
AS
SELECT *
FROM TABle2
where cOrderId in (@ordername)

--->

CREATE PROCEDURE s_CollectOrder
@ordername varchar(100)
AS

declare @sql varchar(8000)

set @sql = 'SELECT *
FROM TABle2'

if @ordername <> ''
set @sql = @sql +
' where cOrderId in (' + @ordername + ')'

exec @sql


wupingerHSH 2004-12-13
  • 打赏
  • 举报
回复
cOrderId是一个varchar型的
brightheroes 2004-12-13
  • 打赏
  • 举报
回复
cOrderId难道不是一个int?
wupingerHSH 2004-12-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型的呀,为什么呢?
wanglei15 2004-12-13
  • 打赏
  • 举报
回复
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;
brightheroes 2004-12-13
  • 打赏
  • 举报
回复
exec @sql
要改成 exec (@sql)才可以
wupingerHSH 2004-12-13
  • 打赏
  • 举报
回复
to : brightheroes(闭关|那一剑的风情)
我这样做了,但是总提示:
服务器: 消息 2812,级别 16,状态 62,行 14
未能找到存储过程 'SELECT *
FROM TABle2 where cOrderId in (dnDN001,DN003)'。
brightheroes 2004-12-13
  • 打赏
  • 举报
回复
首先去查询分析器里面这样执行

ALTER PROCEDURE s_CollectOrder
@ordername varchar(100)
AS

declare @sql varchar(8000)

set @sql = 'SELECT *
FROM TABle2'

if @ordername <> ''
set @sql = @sql +
' where cOrderId in (' + @ordername + ')'

exec @sql


然后执行

exec s_CollectOrder'DN001,DN003'

62,266

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术交流专区
javascript云原生 企业社区
社区管理员
  • ASP.NET
  • .Net开发者社区
  • R小R
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

.NET 社区是一个围绕开源 .NET 的开放、热情、创新、包容的技术社区。社区致力于为广大 .NET 爱好者提供一个良好的知识共享、协同互助的 .NET 技术交流环境。我们尊重不同意见,支持健康理性的辩论和互动,反对歧视和攻击。

希望和大家一起共同营造一个活跃、友好的社区氛围。

试试用AI创作助手写篇文章吧