`
xxd
  • 浏览: 21768 次
  • 性别: 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.rar_t-sql a

    - 动态SQL(`sp_executesql`)允许在运行时构建和执行SQL语句,提高了代码的灵活性。 以上知识点只是T-SQL的冰山一角,实际应用中还包括窗口函数、XML操作、全文搜索、空间数据处理等多个方面。通过深入学习和实践...

    Apress - Pro T-SQL 2008 Programmers Guide (Aug 2008)

    8. **动态SQL**:讨论动态SQL的编写和执行,以及安全性和预编译的概念,如使用sp_executesql存储过程。 9. **事务与并发控制**:讲解事务的ACID属性,事务的隔离级别,以及如何处理并发问题,如死锁和脏读。 10. *...

    T-SQL 2005

    10. **动态SQL**:通过EXEC或sp_executesql系统存储过程,可以执行字符串形式的SQL语句,提供更高的灵活性。 在提供的文件列表中,"Microsoft.Press.Inside.Microsoft.SQL.Server.2005.T-SQL.Programming.Jun.2006....

    系统存储过程,sp_executesql

    `sp_executesql`的基本语法如下: ```sql sp_executesql [@stmt =] stmt [{, [@params =] N'@parameter_name data_type [,...n]'} {, [@param1 =] 'value1' [,...n]}] ``` **参数** 1. `[@stmt =] stmt` - ...

    Transact-Sql 语言参考大全

    - 使用EXEC或sp_executesql执行动态构建的SQL语句。 通过《Transact-SQL 语言参考大全》的学习,开发者将能够熟练掌握T-SQL的各个方面,从而更好地管理和维护SQL Server数据库系统。这本书涵盖了所有关键概念,是...

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

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

    sql语法的各种妙用

    这里使用了`sp_executesql`执行SQL语句,并通过`@a INT OUTPUT`参数传递结果到`@num`变量中。 **注意事项:** - 当使用`OUTPUT`参数时,确保类型匹配。 - 使用`sp_executesql`时,必须正确指定参数列表。 #### 四...

    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 @...

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

    #### `sp_executesql`的基本语法 `sp_executesql`的基本语法如下: ```sql sp_executesql @stmt = N'<your SQL statement>', @params = N'<parameter definitions>', @param1 = , @param2 = , ... ``` - **@...

    Microsoft SQL Server 2005技术内幕:T-SQ程序设计

    5. **动态SQL**:解释动态SQL的使用,包括何时以及如何安全地使用EXEC和sp_executesql等命令。 6. **游标**:介绍游标的使用,虽然在性能上不总是最佳选择,但在某些复杂场景下,它们仍然是必要的。 7. **错误处理...

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

    或者使用`sp_executesql`存储过程,它是SQL Server推荐的执行动态SQL的方式,因为它提供了更好的安全性和性能。例如: ```sql EXEC sp_executesql N'SELECT * FROM tableName' ``` 注意,使用`sp_executesql`时...

    sp_executesql 使用复杂的Unicode 表达式错误的解决方法

    在SQL Server中,`sp_executesql`是一个存储过程,用于执行动态生成的Transact-SQL语句。这个过程在处理动态SQL时非常有用,尤其是当你需要根据运行时的条件来构建查询时。然而,当你试图使用复杂的Unicode表达式,...

    学习SQL应知道的动态SQL语句基本语法 mssql

    在MSSQL中,动态SQL通常通过`EXEC`或`sp_executesql`系统存储过程来执行。下面是一些基本示例: ```sql -- 使用EXEC DECLARE @sql NVARCHAR(MAX) = N'SELECT * FROM MyTable WHERE Id = @id'; SET @sql = N'INSERT ...

    动态SQL语句基本语法

    动态SQL语句是指使用字符串来构建SQL语句,然后使用EXEC或sp_executesql语句来执行的SQL语句。下面是动态SQL语句的一些基本语法和应用场景: 一、普通SQL语句可以用Exec执行 可以使用Exec语句来执行普通的SQL语句...

    dynamic_sql.rar_notes sql server

    动态SQL通常通过EXEC或sp_executesql存储过程来执行。其基本语法如下: ```sql DECLARE @sql NVARCHAR(MAX); SET @sql = N'Your SQL statement here'; EXEC sp_executesql @sql; ``` 或者 ```sql DECLARE @sql ...

    如何使用动态SQL生成T-SQL代码?

    动态SQL是将SQL语句作为字符串变量构建,然后通过EXEC或sp_executesql系统存储过程执行。这种技术使得SQL语句能够在程序执行过程中动态创建和执行,提供了更高的灵活性。 2. **何时使用动态SQL**: - 当你需要...

    sybase与microsoft—sql的语法区别

    - 在执行动态SQL时,Sybase使用`execute (@sql_string)`,而SQL Server使用`exec sp_executesql @sql_string`或`execute @sql_variable`。 3. **游标操作**: - Sybase使用`fetch from cursor_name`来获取游标中...

Global site tag (gtag.js) - Google Analytics