存储过程怎么使用参数,如updata中的条件参数,请大侠高手一顾。一句话的事。(100)

  • 主题发起人 主题发起人 tjlqp
  • 开始时间 开始时间
T

tjlqp

Unregistered / Unconfirmed
GUEST, unregistred user!
/*将要修改表JXXH_GWPX的字段名称(@ZDM0)和要改为的新值(@ZDZ0 )及条件(@TJ0)做三个参数传给存储过程,想对将满足条件(@TJ0)表(@ZDM0)中数据的执行对(@ZDM0)字段的值改为新值(@ZDZ0 ),可无论如何都达不到目的。*/CREATE PROCEDURE UPDATE_GWPX @ZDM0 varchar(60),@ZDZ0 varchar(60) ,@TJ0 varchar(200) ASdeclare @zdm1 varchar(60),@zdZ1 varchar(60),@tj1 varchar(200)select @zdm1= @ZDM0select @zdz1= @ZDZ0select @tj1=@TJ0/*就是要达到下面SQL语句能达到的目的update jxxh_gwpx set xb='男' where id in (select id from jxxh_gwpx where xm ='张三')*/UPDATE jxxh_gwpx SET @zdm1 = @zdz1 WHERE CONVERT(varchar(5),id) in (@tj1)--上面这句既使执行,影响的记录也为零,问题可能出在(@tj1上。GO
 
如果是2000,不支持,只能变成字符串,再执行;如果是2005以上,好象支持.
 
好,变成字符串怎么执行?请教。
 
declare @s varchar(1000)set @s=' update jxxh_gwpx set '+@zdm1+'='''+@zdz1+ '''where Convert(varchar(5),id) in ('+@tj1+')''--print @sexec(@s)变字符串的过程大体就是这样的,这组代码仅仅提供一个参考,因时间原因没有调试过,你可以打印出来看看生成的目标代码。
 
谢谢两位高人!以下是我运行成功的代码,公之天众。以谢大家。CREATE PROCEDURE UPDATE_TY @tabel0 varchar(60),@zd0 varchar(60),@zh0 varchar(20),@tj0 varchar(100) AS--修改某表tabel,某字段a为某值b,条件是tj0declare @tabel1 varchar(60),@zd1 varchar(60),@zh1 varchar(20),@tj1 varchar(100),@sel1 varchar(200)SELECT @tabel1 = @tabel0SELECT @zd1 =@zd0SELECT @zh1 = @zh0SELECT @tj1 =@tj0select @sel1='UPDATE '+@tabel1+' SET ' + @zd1+' = '''+@zh1+''' WHERE '+@tj1print @sel1--得到字符串@sel:UPDATE a SET sfz = '身份证号' WHERE xm = '李四'exec(@sel1)--执行上句成功GO但是还有一条,凡是在形成:UPDATE a SET sfz = '身份证号' WHERE xm = '李四'中的“'”,在调用存储过程前的参数中要事先多写一份。意思是:在程序中写SQL语句时要写出“'”需要多写成“'''”或“'''”,同时要将过程中的转意符事先也准备出来,就是再多写一遍。
 

Similar threads

S
回复
0
查看
3K
SUNSTONE的Delphi笔记
S
S
回复
0
查看
2K
SUNSTONE的Delphi笔记
S
S
回复
0
查看
937
SUNSTONE的Delphi笔记
S
后退
顶部