sql动态查询返回值的意义是什么呢?
如图这样的语句在程序中可以获得到它的结果集,但是如果把@sql中@name=以及@name相关项都去掉的话,还是有返回表的,而且和上面的返回是相同的。那么返回值的意义是什...
如图这样的语句在程序中可以获得到它的结果集,但是如果把@sql中@name=
以及@name相关项都去掉的话,还是有返回表的,而且和上面的返回是相同的。
那么返回值的意义是什么呢?
还有就是如何返回结果集呢? 展开
以及@name相关项都去掉的话,还是有返回表的,而且和上面的返回是相同的。
那么返回值的意义是什么呢?
还有就是如何返回结果集呢? 展开
4个回答
展开全部
@name只是返回一个标量值,它的有无并不影响sp那个扩展存储过程的执行
如果你这个执行后,无论是否得到一个表集,都会将@name这个标量值输出
当然需要在程序中额外的方法接收
当然如果你不想用这种方式,你就想用表集的形式接收也可以
sql语句拼接时,直接select name from即可,最后一句select @out_name去掉就可以了
没有@name变量,相应的接收变量@out_name都去掉就好
这个sp_executesql存储过程的输出参数主要是为了解决拼接sql语句时,不能将拼接为字符的变量定义或输出到外面的问题,举个简单的例子
比如你要查询一个表的数量,那么where条件是动态的,这时就必须使用动态拼接sql语句
而查询得到的这个数量你需要赋值到一个变量中,用来进一步的计算或使用
这时,你用exec 执行的结果如何赋值到变量中呢?答案就是图中所示的方法
如果你这个执行后,无论是否得到一个表集,都会将@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,在程序里面得到的也是结果集啊
你具体想得到什么结果呢?
展开全部
提高查询效率,只查需要的字段,而不是表所有字段
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
楼主对sql语法不熟悉吧,
@name是一个变量,
select @name=name from ... 这句话的意思是查询出表中的name字段,然后赋值给@name,
这样就能够在下面的语句中用@name了
@name是一个变量,
select @name=name from ... 这句话的意思是查询出表中的name字段,然后赋值给@name,
这样就能够在下面的语句中用@name了
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
提高查询效率,保证尽量少的字段名称到前台,安全无污染,放心产品!
追问
你居然和楼下回答的一样,难道说是有道理的?
我之前是这么写select@name=name最后返回@name。但如果我只写select name最后在程序中也可以获取到查询结果啊。而且@name要select一次才能获取到。不select的话就获取不到。
我并没有查其他字段,查询的都是同一字段啊。
追答
select XX 能在sql查询浏览器下面显示出来
print Xx 也能
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询