Sql语句中的select语句。在ms sql server中。对变量赋值

为了动态地取得一个值供其他sql语句使用,往往需要定义一个变量。而在网上查到的方法是:先定义@name,然后如select@name=namefromtable1wher... 为了动态地取得一个值供其他sql语句使用,往往需要定义一个变量。而在网上查到的方法是:先定义@name,然后 如 select @name =name from table 1 where id =‘123’。
问题1.请问这样的方法是不是常用的,还有其他方法么?因为变量值只有一个,而select的结果可能有多个,这样(或者在取得多个name的时候)会报错么?

问题2.现在在已经写好的存储过程中的一些语句中例如(insert ..into..select..组合语句)中想加入“@name =”取得查找到的变量的值。如将 其中的insert...into...select name from table 1 where id =‘123’改为insert...into...select @name =name from table 1 where id =‘123’。会影响原来的这些语句发挥的作用么?
展开
 我来答
felix521
2012-08-14 · TA获得超过857个赞
知道小有建树答主
回答量:128
采纳率:0%
帮助的人:118万
展开全部
问题一:
可以定义局部变量,也可以用存储过程。
局部变量:
声明:DECLARE@变量名 类型
赋值:SET@变量名=值 或 SELECT@变量名=值
select @name =name from table 1 where id =‘123’,如果结果有多个,一般要对这些结果进行处理,用if else或者case when。应该不会报错
问题二:
不会影响。
存储过程:

Create procedure 名
@参数1 数据类型=默认值[output] 默认[input]
···
@参数1 数据类型=默认值[output]
As
Begin
Sql语句
End
select @name =name from table 1 where id =‘123’可以为变量赋值,正常。
szm341
推荐于2016-08-07 · TA获得超过6726个赞
知道大有可为答主
回答量:5005
采纳率:100%
帮助的人:5120万
展开全部
问题1:这句式是常用的,如果给变量赋的值不是单一而是结果集的话
只会赋值最后一条数据,不会报错;通常如果要一条一条的赋值来执行其他操作的话
是要用到游标的
问题2:你想的语句是错误的,因为select @name =name from table 1 where id =‘123’
只是赋值语句,而不是真正意义上的查询语句,所以语句将不会执行
本回答被提问者采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
phxxx777
2012-08-14 · TA获得超过847个赞
知道小有建树答主
回答量:1061
采纳率:100%
帮助的人:683万
展开全部
1.
不会报错,会给你所有的结果。如果想更明确的话可以在加一个条件,例如
select name from table 1 where id='123' and email='a@a.com'

2.
应该不会,实话说我没用过@name=name这写法
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(1)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式