一个令我困惑良久的问题!!!

pointer111 2001-07-20 05:55:18
我想在一个过程中传递一参数,总是说要申明变量@num.代码如下:
use mydb
go
create procedure kk
@num char(20)
as
alter trigger t1_insert
on t1
for insert
as
update t1 set t1.name='kk'
from t1 inner join inserted i
on t1.name=i.name
go

但如果在下面这个过程中,则完全正确
create procedure kk
@num char(20)
as
select * from t1
where name=@num
go


...全文
78 7 打赏 收藏 转发到动态 举报
写回复
用AI写文章
7 条回复
切换为时间正序
请发表友善的回复…
发表回复
guo 2001-07-21
  • 打赏
  • 举报
回复
建表:create table t1 (name varchar(20))
建触发器: create trigger t1_insert on t1 for insert
as
update t1 set t1.name='ab' where t1.name in (select i.name from inserted i)
建存储过程
create proc kk @num char(20)
as
declare @sql varchar(100)
set @sql='alter trigger t1_insert on t1 for insert as
update t1 set t1.name='+quotename(@num,'''')+' where t1.name in (select i.name from inserted i)'
exec @sql
pointer111 2001-07-21
  • 打赏
  • 举报
回复
我只是想改变新插入记录的name字段值,而update t1 set t1.name=@num
会改变了所有记录的。而且我问的是为什么每次都提示要定义@num.但是
@num已经在一开头就定义了阿!!!
RedGuest 2001-07-20
  • 打赏
  • 举报
回复
up
ylm163net 2001-07-20
  • 打赏
  • 举报
回复
奇怪的代码
guo 2001-07-20
  • 打赏
  • 举报
回复
我不知道
update t1 set t1.name=@num
from t1 inner join inserted i
on t1.name=i.name

update t1 set t1.name=@num
有什么区别
pointer111 2001-07-20
  • 打赏
  • 举报
回复
打错了,是:
use mydb
go
create procedure kk
@num char(20)
as
alter trigger t1_insert
on t1
for insert
as
update t1 set t1.name=@num
from t1 inner join inserted i
on t1.name=i.name
go
guo 2001-07-20
  • 打赏
  • 举报
回复
@num没用吗?
join之后的结果也没使用吗?

34,870

社区成员

发帖
与我相关
我的任务
社区描述
MS-SQL Server相关内容讨论专区
社区管理员
  • 基础类社区
  • 二月十六
  • 卖水果的net
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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