[分享]T-SQL EXECUTE 如何操作_MySQL, Oracle及数据库讨论区_Weblogic技术|Tuxedo技术|中间件技术|Oracle论坛|JAVA论坛|Linux/Unix技术|hadoop论坛_联动北方技术论坛  
网站首页 | 关于我们 | 服务中心 | 经验交流 | 公司荣誉 | 成功案例 | 合作伙伴 | 联系我们 |
联动北方-国内领先的云技术服务提供商
»  游客             当前位置:  论坛首页 »  自由讨论区 »  MySQL, Oracle及数据库讨论区 »
总帖数
1
每页帖数
101/1页1
返回列表
0
发起投票  发起投票 发新帖子
查看: 1460 | 回复: 0   主题: [分享]T-SQL EXECUTE 如何操作        下一篇 
一个路过的
版主
等级:中校
经验:1970
发帖:34
精华:2
注册:2015-9-2
状态:离线
发送短消息息给一个路过的 加好友    发送短消息息给一个路过的 发消息
发表于: IP:您无权察看 2015-10-23 16:00:19 | [全部帖] [楼主帖] 楼主

在T-SQL里的变数,不能用来取代物件名称或是关键字,只能用在运算式中。所以如果要动态组出 SQL 陈述式,使用 EXECUTE 陈述式,可以透过动态的方式来设定。SQL Server 扩充了 EXECUTE 陈述式的功能,让我们可以把要执行的 T-SQL 传给 SQL Server。
以下是要在书局里,找出一本书类别是科学的

USE BookStore 
GO 
 
-- 宣告变数 
DECLARE @SQLCommand nvarchar(200) 
DECLARE @columnList nvarchar(50) 
DECLARE @color varchar(10) 
 
 
-- 定义变数 
SET @columnList = N'BookID书本编号, Type 类型' 
SET @type = '''Science''' 
 
-- 动态组出 T-SQL 
SET @SQLCommand = 'SELECT ' + @columnList + ' FROM Production.Book WHERE Type = ' + @type 
 
-- 执行动态组出的 T-SQL 

EXECUTE (@SQLCommand)

@type这变数值左右各用了 3 个单引号(')来把 Science 包起来,第 1 个单引号代表变数值的型别是 nvarchar 型别,第 2 与第 3 个单引号最后会被视为只有一个单引号。EXECUTE 陈述式之后,用一对刮号把要执行的 T-SQL 给包起来。

这样是简短的命令,但是效果相同:

EXEC (@SQLCommand)

也可以增加查询的条件,例如查询ID编号

要注意变数型态的对应,否则执行时会出现型能不符的错误。

USE AdventureWorks     
GO 
 
-- 宣告变数 
DECLARE @SQLCommand nvarchar(200) 
DECLARE @columnList nvarchar(50) 
DECLARE @color varchar(10) 
DECLARE @pID varchar(5) 
 
-- 定义变数 
SET @columnList = N'BookID 书本编号, Type 类型' 
SET @type = '''Science''' 
SET @pID = '002' 
 
-- 动态组出 T-SQL 
SET @SQLCommand = 'SELECT ' + @columnList + ' FROM Production.Book WHERE Type = ' + @color + ' AND BookID < ' + @pID 
 
 
-- 执行动态组出的 T-SQL 
EXEC (@SQLCommand)

该贴被一个路过的编辑于2015-10-23 16:03:08



赞(0)    操作        顶端 
总帖数
1
每页帖数
101/1页1
返回列表
发新帖子
请输入验证码: 点击刷新验证码
您需要登录后才可以回帖 登录 | 注册
技术讨论