好贷网好贷款

动态SQL符值 20fredrickhu]

发布时间:2016-12-4 22:21:47 编辑:www.fx114.net 分享查询网我要评论
本篇文章主要介绍了"动态SQL符值 20fredrickhu]",主要涉及到动态SQL符值 20fredrickhu]方面的内容,对于动态SQL符值 20fredrickhu]感兴趣的同学可以参考一下。

谁知道“动态SQL符值”怎么写 ?尽量说详细点,我多给点分。

很新的技术.不懂.帮顶.

create proc pr_test  @col varchar(100),  @ret varchar(1000) output  as  begin      declare @s nvarchar(1000)      set @s = N'select isnull(@ret+'','','''')[email protected]+' from abc order by newid() '      exec sp_executesql @s,[email protected] varchar(1000) out',@ret out  end  go 

create proc pr_test  @col varchar(100),  @ret varchar(1000) output  as  begin      declare @s nvarchar(1000)      set @s = N'select @ret =isnull(@ret+'','','''')[email protected]+' from abc order by newid() '      exec sp_executesql @s,[email protected] varchar(1000) out',@ret out  end  go 

学习SQL应知道的动态SQL语句基本语法  1 、普通SQL语句可以用Exec执行  eg: Select * from tableName   Exec('select * from tableName')   Exec sp_executesql N'select * from tableName' -- 请注意字符串前一定要加N   2、字段名,表名,数据库名之类作为变量时,必须用动态SQL  eg:   declare @fname varchar(20)   set @fname = 'FiledName'   Select @fname from tableName -- 错误,不会提示错误,但结果为固定值FiledName,并非所要。   Exec('select ' + @fname + ' from tableName') -- 请注意 加号前后的 单引号的边上加空格   当然将字符串改成变量的形式也可   declare @fname varchar(20)   set @fname = 'FiledName' --设置字段名   declare @s varchar(1000)   set @s = 'select ' + @fname + ' from tableName'   Exec(@s) -- 成功   exec sp_executesql @s -- 此句会报错   declare @s Nvarchar(1000) -- 注意此处改为nvarchar(1000)   set @s = 'select ' + @fname + ' from tableName'   Exec(@s) -- 成功   exec sp_executesql @s -- 此句正确   3、输出参数  declare @num int,   @sqls nvarchar(4000)   set @sqls='select count(*) from tableName'   exec(@sqls)   --如何将exec执行结果放入变量中?   declare @num int,   @sqls nvarchar(4000)   set @sqls='select @a=count(*) from tableName '   exec sp_executesql @sqls,[email protected] int output',@num output   select @num   此外,如果想要在SQL语句 字符串中使用 单引号 '' 可以 使用 '''' 

学习。。。。

学习中

通俗的講 就是用字符串拼接SQL語句.最後用Exec()執行.

该回复于2009-07-06 15:35:31被版主删除

简单的将就是把直接使用的query语句里的任意部分用参数替换,然后再用‘’变成字符串 最后用exce()运行

学习下

学习!thank you!

引用 9 楼 zc831228 的回复:简单的将就是把直接使用的query语句里的任意部分用参数替换,然后再用‘’变成字符串 最后用exce()运行 我同意,正解

输入或输出参数       (1)输入参数:           declare @QueryString nvarchar(1000) --动态查询语句变量(注:必须为ntext或nchar哐nvarchar类型,不能是varchar类型)           declare @paramstring nvarchar(200) --设置动态语句中的参数的字符串(注:必须为ntext或nchar哐nvarchar类型,不能是varchar类型)           declare @input_id int--定义需传入动态语句的参数的值           set @QueryString='select * from tablename  where [email protected]'  --id为字段名,@id为要传入的参数           set @[email protected] int' --设置动态语句中参数的定义的字符串           set @input_id =1  --设置需传入动态语句的参数的值为1           exec sp_executesql @querystring,@paramstring,@[email protected]_id             若有多个参数:           declare @QueryString nvarchar(1000) --动态查询语句变量(注:必须为ntext或nchar哐nvarchar类型,不能是varchar类型)           declare @paramstring nvarchar(200) --设置动态语句中的参数的字符串(注:必须为ntext或nchar哐nvarchar类型,不能是varchar类型)           declare @input_id int--定义需传入动态语句的参数的值,参数1           declare @input_name varchar(20)--定义需传入动态语句的参数的值,参数2           set @QueryString='select * from tablename  where [email protected] and [email protected]'   --id与name为字段名,@[email protected]           set @[email protected] int,@name varchar(20)' --设置动态语句中参数的定义的字符串,多个参数用","隔开           set @input_id =1  --设置需传入动态语句的参数的值为1           set @input_name='张三'   --设置需传入动态语句的参数的值为"张三"           exec sp_executesql @querystring,@paramstring,@[email protected]_id,@[email protected]_name --请注意参数的顺序      (2)输出参数              declare @num int, @sqls nvarchar(4000)              set @sqls='select count(*) from tableName'              exec(@sqls)          --如何将exec执行结果放入变量中?                   declare @QueryString nvarchar(1000) --动态查询语名变量(注:必须为ntext或nchar哐nvarchar类型,不能是varchar类型)         declare @paramstring nvarchar(200) --设置动态语句中的参数的字符串(注:必须为ntext或nchar哐nvarchar类型,不能是varchar类型)         declare @output_result [email protected]_result          set @QueryString='select @totalcount=count(*) from tablename' [email protected]         set @[email protected] int output' --设置动态语句中参数的定义的字符串,多个参数用","隔开         exec sp_executesql @querystring,@paramstring,@[email protected]_result output         select @output_result         当然,输入与输出参数可以一起使用,大家可以自己去试一试。         另外,动态语句查询的结果集要输出的话,我只想到以下用临时表的方法,不知各位有没有更好的方法.         IF object_id('[tempdb].[dbo].#tmp') IS NOT NULL --判断临时表#tmp是否存在,存在则删除             drop table #tmp         select * into #tmp from tablename where 1=2 --创建临时表#tmp,其结构与tablename相同         declare @QueryString nvarchar(1000) --动态查询语名变量(注:必须为ntext或nchar哐nvarchar类型,不能是varchar类型)         set @QueryString='select * from tablename '         insert into #tmp(field1,field2,...) exec(@querystirng) 

学习了。

学习

学习

学习中

动态SQL符值??

复制  赋值 ?

上一篇:woshiyimingzhengzaixuexiruanjiandexuesheng 0fredrickhu]
下一篇:求与ORACLE中的LAG函数等价的SQL2005函数 20javawhy]

相关文章

相关评论