sql动态查询返回值的意义是什么呢?

如图这样的语句在程序中可以获得到它的结果集,但是如果把@sql中@name=以及@name相关项都去掉的话,还是有返回表的,而且和上面的返回是相同的。那么返回值的意义是什... 如图这样的语句在程序中可以获得到它的结果集,但是如果把@sql中@name=
以及@name相关项都去掉的话,还是有返回表的,而且和上面的返回是相同的。
那么返回值的意义是什么呢?
还有就是如何返回结果集呢?
展开
 我来答
szm341
2014-01-23 · TA获得超过6726个赞
知道大有可为答主
回答量:5005
采纳率:100%
帮助的人:5160万
展开全部
@name只是返回一个标量值,它的有无并不影响sp那个扩展存储过程的执行
如果你这个执行后,无论是否得到一个表集,都会将@name这个标量值输出
当然需要在程序中额外的方法接收
当然如果你不想用这种方式,你就想用表集的形式接收也可以
sql语句拼接时,直接select name from即可,最后一句select @out_name去掉就可以了
没有@name变量,相应的接收变量@out_name都去掉就好

这个sp_executesql存储过程的输出参数主要是为了解决拼接sql语句时,不能将拼接为字符的变量定义或输出到外面的问题,举个简单的例子

比如你要查询一个表的数量,那么where条件是动态的,这时就必须使用动态拼接sql语句
而查询得到的这个数量你需要赋值到一个变量中,用来进一步的计算或使用
这时,你用exec 执行的结果如何赋值到变量中呢?答案就是图中所示的方法
更多追问追答
追问
那如何返回结果集呢?
追答
就你这个句子而言,完全没必要用到拼接执行
就运行一句select name from tb where id=@id
然后给@id赋值就好了,就是结果集了啊

你途中最后一句select @out_name,在程序里面得到的也是结果集啊
你具体想得到什么结果呢?
百度网友ccae8d0
2014-01-22 · TA获得超过2186个赞
知道大有可为答主
回答量:3104
采纳率:0%
帮助的人:1489万
展开全部
提高查询效率,只查需要的字段,而不是表所有字段
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
丶扬丿
2014-01-23 · 超过11用户采纳过TA的回答
知道答主
回答量:31
采纳率:0%
帮助的人:16.4万
展开全部
楼主对sql语法不熟悉吧,
@name是一个变量,
select @name=name from ... 这句话的意思是查询出表中的name字段,然后赋值给@name,
这样就能够在下面的语句中用@name了
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
已经漂流到南京
2014-01-22
知道答主
回答量:26
采纳率:0%
帮助的人:17万
展开全部
提高查询效率,保证尽量少的字段名称到前台,安全无污染,放心产品!
追问
你居然和楼下回答的一样,难道说是有道理的?
我之前是这么写select@name=name最后返回@name。但如果我只写select name最后在程序中也可以获取到查询结果啊。而且@name要select一次才能获取到。不select的话就获取不到。
我并没有查其他字段,查询的都是同一字段啊。
追答
select XX 能在sql查询浏览器下面显示出来
print Xx 也能
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(2)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

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

类别

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

说明

0/200

提交
取消

辅 助

模 式