sqlserver exec 返回结果集_php 返回查询结果_update 执行返回结果

电脑杂谈  发布时间:2019-08-21 20:02:19  来源:网络整理

update 执行返回结果_sqlserver exec 返回结果集_php 返回查询结果

ITPUB论坛-中国的IT技术社区论坛 ≡ 大数据与 ≡ MS SQL Server EXEC 语句执行结果返回

返回列表

[笔记]EXEC 语句执行结果返回[复制链接]

guan_jh

guan_jh当前离线

积分

论坛徽章:

发表于 2009-4-7 09:46|显示全部楼层|

定义好的表达式,把值赋进去过后sqlserver exec 返回结果集,如何执行这个表达式,如何把结果返回给一个变量?

例:

declare @1 varchar(100),@2 varchar(500),@3 varchar(100)

select @1 = substring('123456789',3,len('123456789') - 3 )

select @2 = 'select top 1 ' + @1 +' into ' + @3 +'from#t'

exec(@2)

select @3

如何让@3 获得@2执行过后的结果?

exec, 语句, 定义, 表达式, 如何

stepNew

stepNew当前离线

积分

update 执行返回结果_sqlserver exec 返回结果集_php 返回查询结果

论坛徽章:

发表于 2009-4-7 10:03|显示全部楼层

#t是什么?

@3 现在是NULL 所以select @2 = 'select top 1 ' + @1 +' into ' + @3 +'from#t' 这步过后@2是NULL,所以不能得到想要的结果。

guan_jh

guan_jh当前离线

积分

论坛徽章:

楼主|发表于 2009-4-7 10:06|显示全部楼层

#t 是临时表

stepNew

stepNew当前离线

积分

论坛徽章:

发表于 2009-4-7 10:18|显示全部楼层

@2语句是NULL;

你是不是想把@1传递给@3?

declare @1 varchar(100),@3 varchar(100)

select @1 = substring('123456789',3,len('123456789') - 3 )

set @3 = @1

sqlserver exec 返回结果集_php 返回查询结果_update 执行返回结果

select @3

jingwwj5g

jingwwj5g当前离线

积分

论坛徽章:

发表于 2009-4-7 10:21|显示全部楼层

用sp_executesql

declare @1 varchar(100),@2 varchar(500),@3 varchar(100)

select @1 = substring('123456789',3,len('123456789') - 3 )

select @2 = 'select top 1 ' + @1 +' into ' + @3 +'from#t'

exec sp_executesql @2 , N'@1varchar,@3 varchar output',@1@3 output

select @3

stepNew

stepNew当前离线

积分

论坛徽章:

发表于 2009-4-7 10:23|显示全部楼层

原帖由 jingwwj5g 于 2009-4-7 10:21 发表

用sp_executesql

declare @1 varchar(100),@2 varchar(500),@3 varchar(100)

update 执行返回结果_sqlserver exec 返回结果集_php 返回查询结果

select @1 = substring('123456789',3,len('123456789') - 3 )

select @2 = 'select top 1 ' + @1 +' into ' + @3 +'from#t'

exec sp_executesql @2 , N'@1varchar,@3 varchar output',@1@3 output

select @3

可问题是@2为NULL;没有执行的可能。

guan_jh

guan_jh当前离线

积分

论坛徽章:

楼主|发表于 2009-4-7 10:35|显示全部楼层

谢谢stepNew,,

不过select @1 = substring('123456789',3,len('123456789') - 3 ) 这一句现实中不是这样的,实际状况是表达式写在别的表里,直接取回来赋给@2,也就是说是一个隐式表达式,,,,,

jingwwj5g

jingwwj5g当前离线

积分

论坛徽章:

发表于 2009-4-7 10:52|显示全部楼层

@2是有问题sqlserver exec 返回结果集,简化一下,

declare @1 varchar(100),@2 nvarchar(500),@3 varchar(100)

select @1 = substring('123456789',3,len('123456789') - 3 )

sqlserver exec 返回结果集_php 返回查询结果_update 执行返回结果

select @2 = 'select@3 = @1'

exec sp_executesql @2 , N'@1varchar,@3 varchar output',@1,@3 output

select @3

可是,让我不解的是,为什么结果是个‘3’ 呢? 呵呵,问题导致的问题。

stepNew

stepNew当前离线

积分

论坛徽章:

发表于 2009-4-7 11:06|显示全部楼层

你的@1varchar没有长度 呵呵

jingwwj5g

jingwwj5g当前离线

积分

论坛徽章:

发表于 2009-4-7 11:21|显示全部楼层

问题是这样的,如果@1作为变量拼接时,可不指定宽度。但是输出参数需要制定长度。

declare @1 varchar(100),@2 nvarchar(500),@3 varchar(100)

set @1 = N'substring(''123456789'',3,len(''123456789'') - 3 )'

set @2 = N'select@3 ='+@1

exec sp_executesql @2 , N'@1varchar,@3 varchar(500) output',@1,@3 output

select @3

返回列表


本文来自电脑杂谈,转载请注明本文网址:
https://www.pc-fly.com/a/ruanjian/article-120081-1.html

    相关阅读
      发表评论  请自觉遵守互联网相关的政策法规,严禁发布、暴力、反动的言论

      热点图片
      拼命载入中...