`
xxd
  • 浏览: 21138 次
  • 性别: Icon_minigender_1
  • 来自: 北京
最近访客 更多访客>>
文章分类
社区版块
存档分类
最新评论

T-SQL - sp_executesql语法

SQL 
阅读更多
--方法1查询表改为动态
select * from sysobjects
exec('select ID,Name from sysobjects')
exec sp_executesql N'select ID,Name from sysobjects'--多了一个N为unicode

--方法2:字段名,表名,数据库名之类作为变量时,用动态SQL
declare @FName varchar(20)
set @FName='ID'
exec('select '+@FName+' from sysobjects where '+@FName+'=5' )


declare @s varchar(1000)
set @s=N'select '+@FName+' from sysobjects where '+@FName+'=5'
exec sp_executesql @s--会报错


declare @s nvarchar(1000)--改为nvarchar
set @s=N'select '+@FName+' from sysobjects where '+@FName+'=5'
exec sp_executesql @s--成功
--方法3:输入参数
declare @i int,@s nvarchar(1000)
set @i=5
exec('select ID,Name from sysobjects where ID='+@i)

set @s='select ID,Name from sysobjects where ID=@i'
exec sp_executesql @s,N'@i int',@i--此处输入参数要加上N
--方法4:输出参数
declare @i int,@s nvarchar(1000)
set @s='select @i=count(1) from sysobjects'

--用exec
exec('declare @i int '+@s+' select @i')--把整个语句用字符串加起来执行

--用sp_executesql
exec sp_executesql @s,N'@i int output',@i output--此处输出参数要加上N
select @i
--方法5:输入输出
--用sp_executesql
declare @i int,@con int,@s nvarchar(1000)
set @i=5
select @s='select @con=count(1) from sysobjects where ID>@i'
exec sp_executesql @s,N'@con int output,@i int',@con output ,@i
select @con

--用exec
declare @i int,@s nvarchar(1000)
set @i=5
select @s='declare @con int select @con=count(1) from sysobjects where ID>'+rtrim(@i)+' select @con'
--方法6:动态函数
declare @starttime datetime
declare @endtime datetime
set @starttime = '2009-02-20 00:00:05.680'
set @endtime = '2009-02-20 09:10:05.680'
declare @sql nvarchar(max)
set @sql= N'
select * from Conn_AdminIII_2009_02_10 where starttime between '''+ convert(nvarchar(200), @starttime, 120) +'''
and '''+ convert(nvarchar(200), @endtime, 120) +''' order by duration desc'
exec sp_executesql @sql
分享到:
评论

相关推荐

    SQL Server 中 EXEC 与 SP_EXECUTESQL 的区别.doc

    先来看一下SP_EXECUTESQL的语法: sp_executesql [ @stmt = ] stmt [ {, [@params=] N'@parameter_name data_type [ OUT | OUTPUT ][,...n]' } {, [ @param1 = ] 'value1' [ ,...n ] } ] 说明: [ @stmt = ] ...

    系统存储过程,sp_executesql

     语法 sp_executesql [@stmt =] stmt [ {, [@params =] N’@parameter_name data_type [,…n]’ } {, [@param1 =] ‘value1’ [,…n] } ] 参数 [@stmt =] stmt 包含 Transact-SQL 语句或...

    动态SQL语句基本语法。动态SQL语句基本语法

    Exec sp_executesql N'select * from tableName' -- 请注意字符串前一定要加N 2:字段名,表名,数据库名之类作为变量时,必须用动态SQL 错误: declare @fname varchar(20) set @fname = 'FiledName' Select ...

    sql.rar_exec select_select_sql select from exec_普通sql大全

    Exec sp_executesql N select * from tableName -- 请注意字符串前一定要加N 2:字段名,表名,数据库名之类作为变量时,必须用动态SQL eg: declare @fname varchar(20) set @fname = FiledName Select @...

    SQLServer2000高级编程技术(part02)-想学存储过程 SQL编程 务必要看

    10.1.3 使用sp_executesql存储过程 10.2 使用时间戳的乐观锁 10.2.1 时间戳 10.2.2 TSEQUAL函数 10.2.3 时间戳转换 10.3 全文搜索和索引 10.4 嵌套的存储过程 10.4.1 使用临时表来传递一个记录集给一个嵌套的存储...

    SQLServer2000高级编程技术-已添加书签,想学存储过程、SQL编程务必要看,分析非常透彻

    10.1.3 使用sp_executesql存储过程 10.2 使用时间戳的乐观锁 10.2.1 时间戳 10.2.2 TSEQUAL函数 10.2.3 时间戳转换 10.3 全文搜索和索引 10.4 嵌套的存储过程 10.4.1 使用临时表来传递一个记录集给一个嵌套的存储...

    动态SQL 并且把返回的值赋给变量

    动态SQL 并且把返回的值赋给变量,sp_executesql,动态sql语句基本语法

    经典SQL语句大全

    exec sp_executesql @sql 注意:在top后不能直接跟一个变量,所以在实际应用中只有这样的进行特殊的处理。Rid为一个标识列,如果top后还有具体的字段,这样做是非常有好处的。因为这样可以避免 top的字段如果是...

    sql经典语句一部分

    exec sp_executesql @sql 注意:在top后不能直接跟一个变量,所以在实际应用中只有这样的进行特殊的处理。Rid为一个标识列,如果top后还有具体的字段,这样做是非常有好处的。因为这样可以避免 top的字段如果是...

    数据库操作语句大全(sql)

    exec sp_executesql @sql 注意:在top后不能直接跟一个变量,所以在实际应用中只有这样的进行特殊的处理。Rid为一个标识列,如果top后还有具体的字段,这样做是非常有好处的。因为这样可以避免 top的字段如果是...

    SQL应知道的动态SQL语句基本语法(总计82页Wrod)

    例如:1.普通SQL语句可以用Exec执行 2、字段名,表名,数据库名之类作为变量时,必须用动态SQL 3、输出参数 (“一网打尽”通用SQL数据库...Exec sp_executesql N'select * from tableName' -- 请注意字符串前一定要加N

    SQL Server 2008中SQL之WaitFor使用介绍

    语法为:WAITFOR { DELAY ‘time_to_pass’ | TIME ‘time_to_execute’ | [ ( receive_statement ) | ( get_conversation_group_statement ) ] [ , TIMEOUT timeout ]} 以下示例在晚上 10:20 (22:20) 执行存储过程 ...

    超实用sql语句

    exec sp_executesql @sql 注意:在top后不能直接跟一个变量,所以在实际应用中只有这样的进行特殊的处理。Rid为一个标识列,如果top后还有具体的字段,这样做是非常有好处的。因为这样可以避免 top的字段如果是...

    sql2005全文检索.doc

    SQL Server 2005全文检索技术在网站上的应用实录 http://tech.ddvip.com 2008年01月21日 社区交流 Excel服务器-用Excel做管理系统 关键字: DataGuard checkpoint 动态查询 synonyms 卸载SQL 2005 SQL Server群集 ...

    经典全面的SQL语句大全

    经典SQL语句大全 下列语句部分是Mssql语句,不可以在access中使用。... Set 对象变量名=连接对象.Execute("SQL 查询语言")  Execute方法调用后,会自动创建记录集对象,并将查询结果存储在该记录...

Global site tag (gtag.js) - Google Analytics