ylbtech-SQL Server:SQL Server-9,流程控制 Execute 语句 |
SQL Server 流程控制中的 Execute 语句。
1,Execute语句(插入很实用select * into Orders_'+@year+' from Orders where Year(OrderDate)='+@year) |
1 --=============================================================
2 -- 1,Execute语句
3 -- Desc:Execute语句可用来执行存储过程、用户自定义函数或批处理中的命令字符串。在SQL Server2005
4 -- 中Execute语句还可以向连接服务器发送传递命令。严格来说,Execute语句不属于T-SQL流程控制语句
5 -- ,但它在T-SQL程序中使用频率很高。
6 -- author:ylbtech
7 -- pubdate:22:25 2012/12/18
8 --=============================================================
9 go
10
11 go
12 --=============================================================
13 -- 2.1,Syntax(运行存储过程或函数的语法代码)
14 --=============================================================
15 [Exec|Execute]
16 {
17 [@return_status=]
18 {module[;number]|@module_name_var}
19 [[@parameter]
20 {
21 value
22 |@variable[Output]
23 |[Default]
24 }
25 ]
26 [,...n]
27 }
28 [;]
29 --2.1,Remark:
30 go
31 --=============================================================
32 -- 2.2,Syntax(运行字符串的语法代码)
33 --=============================================================
34 {Exec|Execute}
35 ({@string_varialble|[N]'tsql_string'}[+...n])
36 [As{Login|User}='name']
37 [;]
38 --2.2,Remark:
39
40 go
41 --=============================================================
42 -- 2.3,Syntax(向连接服务器发送传递命令的语法代码)
43 --=============================================================
44 {Exec|Execute}
45 ({@string_vaiable|[N]'command_string'}[+...n])
46 [{,{value|@variable[Output]}}[...n]]
47 )
48 [As{Login|User}='name']
49 [At linked_server_name]
50 [;]
51 --2.2,Remark:
52 go
53 --=============================================================
54 -- 3,Example
55 -- Desc:将订单表里1991年到2000年的订单分别放在一个新建的数据表中。
56 --=============================================================
57 use Northwind
58 go
59
60 Declare @execStr varchar(1000)
61 Declare @year int
62 Set @year=2000
63
64 While @year>1990
65 Begin
66 Set @execStr='select * from Orders where Year(OrderDate)='
67 +Cast(@year As varchar(4)) --[注释一]
68 Exec(@execStr) --[注释二]
69
70 --[注释三]
71 If @@ROWCOUNT>0
72 Execute('select * into Orders_'+@year+' from Orders where Year(OrderDate)='+@year)
73 Set @year=@year-1
74 End
75 go
76 --remark:
77 --【注释一】将查询语句放在一个变量中。
78 --【注释二】执行变量中的查询语句。
79 --【注释三】当该年订单数量不为零时将查询出来的记录插入一个新表中。
80 select * from Orders
81
82 go
83 --=============================================================
84 -- 4,Operation result
85 --=============================================================