SQL2000存储过程传'a','b','c'参数

liuyangccu 2011-01-12 04:17:25
写了一个存储过程
CREATE PROCEDURE text @cs VARCHAR(400) AS
BEGIN

INSERT INTO TABLE1 SELECT * FROM TABLE2 WHERE cs IN (@cs)

END


如果一个内容的参数如:exec text '01' 可以执行并且数据插入;
但是多个内容的参数如:exec text '01','02' 执行成功但未内插入数据;

按照单引号的转移方式 写了几个参数传入的方式 '''01'',''02''' 都不能执行出数据

请大侠们帮忙看一下,到底这个参数要怎么写才能插入数据啊。。。
...全文
172 17 打赏 收藏 转发到动态 举报
写回复
用AI写文章
17 条回复
切换为时间正序
请发表友善的回复…
发表回复
liuyangccu 2011-01-12
  • 打赏
  • 举报
回复
可以了 送分了。
华夏小卒 2011-01-12
  • 打赏
  • 举报
回复
[Quote=引用 15 楼 shigu_java 的回复:]
INSERT INTO TABLE1 SELECT * FROM TABLE2 WHERE charindex(','+cs+',',','+@cs+',')>0
正解 谢谢各位结贴了。
[/Quote]难道我3楼的不行吗
liuyangccu 2011-01-12
  • 打赏
  • 举报
回复
INSERT INTO TABLE1 SELECT * FROM TABLE2 WHERE charindex(','+cs+',',','+@cs+',')>0
正解 谢谢各位结贴了。
Spade_J 2011-01-12
  • 打赏
  • 举报
回复
alter PROCEDURE text @cs VARCHAR(400) AS
BEGIN
EXEC('INSERT INTO table1 SELECT * FROM table2 WHERE cs IN ' +@cs)
END

exec text '(02,03)'
Shawn 2011-01-12
  • 打赏
  • 举报
回复
用sp_executesql不行,只能传一个参数:
alter PROCEDURE proc_test @cs VARCHAR(400) AS
BEGIN
EXEC sp_executesql N'INSERT INTO #temp1 SELECT * FROM #temp2 WHERE tkey IN (@cs)', N'@cs VARCHAR(400)', @cs
END

EXEC proc_test '1'
EXEC proc_test '1,2,3'--错误
mugua604 2011-01-12
  • 打赏
  • 举报
回复
[Quote=引用 8 楼 shigu_java 的回复:]
谢谢 mugua604


set @sql =N' INSERT INTO TABLE1 SELECT * FROM TABLE2 WHERE cs IN ('+@cs+')'
PRINT @sql
EXECUTE sp_executesql @sql

如果不用以上定义语句的方式还能实现吗,因为这样我要改的语句实在是太多了。
[/Quote]
必须这样,那只能在Client端处理哦。。
liuyangccu 2011-01-12
  • 打赏
  • 举报
回复
charindex(','+cs+',',','+@cs+',')>0
大哥们 这个方法没有起到过滤的作用,
TABLE2表中有4条记录
分别执行 exec text '01,02'和exec text '01' 都插入了四条记录
Shawn 2011-01-12
  • 打赏
  • 举报
回复
--定义的存储过程只能传一个参数
alter PROCEDURE proc_test @cs VARCHAR(400) AS
BEGIN
DECLARE @sql VARCHAR(8000)
SET @sql = 'INSERT INTO #temp1 SELECT * FROM #temp2 WHERE tkey IN (' + @cs + ')'
--PRINT @sql
EXEC(@sql)
END

EXEC proc_test '''01'', ''02'', ''03'''
renwenli07461 2011-01-12
  • 打赏
  • 举报
回复
CREATE PROCEDURE text @cs VARCHAR(400) AS
BEGIN

INSERT INTO TABLE1 SELECT * FROM TABLE2 WHERE charindex(','+cs+',',','+@cs+',')>0

END

go

exec text '01,02'
liuyangccu 2011-01-12
  • 打赏
  • 举报
回复
谢谢 mugua604


set @sql =N' INSERT INTO TABLE1 SELECT * FROM TABLE2 WHERE cs IN ('+@cs+')'
PRINT @sql
EXECUTE sp_executesql @sql

如果不用以上定义语句的方式还能实现吗,因为这样我要改的语句实在是太多了。

mugua604 2011-01-12
  • 打赏
  • 举报
回复
create table TABLE2 (cs varchar(10),id int )
insert into TABLE2(cs,id)
select '01','1'
union all
select '03','3'


ALTER PROCEDURE text @cs VARCHAR(400) AS
BEGIN
declare @sql nvarchar(4000)
set @sql =N' INSERT INTO TABLE1 SELECT * FROM TABLE2 WHERE cs IN ('+@cs+')'
PRINT @sql
EXECUTE sp_executesql @sql
END


exec text '''01'',''02'''
select * from TABLE1
/*
cs id
---------- -----------
01 1
(1 行受影响)
*/
mugua604 2011-01-12
  • 打赏
  • 举报
回复

create table TABLE2 (cs varchar(10),id int )
insert into TABLE2(cs,id)
select '01','1'
union all
select '03','3'


ALTER PROCEDURE text @cs VARCHAR(400) AS
BEGIN
declare @sql nvarchar(4000)
set @sql =N' INSERT INTO TABLE1 SELECT * FROM TABLE2 WHERE cs IN ('+@cs+')'
PRINT @sql
EXECUTE sp_executesql @sql
END


exec text '''01'',''02'''
select * from TABLE1
/*
cs id
---------- -----------
01 1

(1 行受影响)


*/
AcHerat 2011-01-12
  • 打赏
  • 举报
回复
[Quote=引用 3 楼 js_szy 的回复:]
SQL code
CREATE PROCEDURE text
@cs VARCHAR(400) AS
BEGIN

INSERT INTO TABLE1 SELECT * FROM TABLE2 WHERE charindex(','+ltrim(cs)+',',','+@cs+',')>0 -- cs 为int 型

END
go

exec text '1,2,3'……
[/Quote]

++++++++++++++++++++1
liuyangccu 2011-01-12
  • 打赏
  • 举报
回复
回 J513930673 朋友
我定义的是一个变量只是想实现传入 '01' 可以执行, 传入( '01','02' ) 也可以执行
就是想完成 where cs IN (@cs) 这个in的过程


回 mugua604 朋友
我试过了 要插入的表无结果,我测试的时候是很简单的两张表。就一句SQL语句
华夏小卒 2011-01-12
  • 打赏
  • 举报
回复
CREATE PROCEDURE text 
@cs VARCHAR(400) AS
BEGIN

INSERT INTO TABLE1 SELECT * FROM TABLE2 WHERE charindex(','+ltrim(cs)+',',','+@cs+',')>0 -- cs 为int 型

END

go

exec text '1,2,3'
mugua604 2011-01-12
  • 打赏
  • 举报
回复
exec text  '''01'',''02'''
这样不可以?
J513930673 2011-01-12
  • 打赏
  • 举报
回复
貌似你存储过程中只定义了一个变量,在执行的时候怎么可以用两个变量呢!

27,579

社区成员

发帖
与我相关
我的任务
社区描述
MS-SQL Server 应用实例
社区管理员
  • 应用实例社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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