4.7.4 declare
语法如下:
declare {{ @local_variable data_type }
| { @cursor_variable_name cursor }
| { table_type_definition }
} [,...n]]
declare 命令用于声明一个或多个局部变量、游标变量或表变量。在用declare命令声明之后,所有的变量都被赋予初值null。需要用select 或set命令来给变量赋值。变量类型可为系统定义的或用户定义的类型,但不能为text、ntext、image类型。cursor 指名变量是局部的游标变量。
例4-16
declare @x float @y datetime
select @x = pi @y = getdate
print @x
print @y
运行结果如下:
3.14159
jun 17 2000 4:32pm
注意:如果变量为字符型,那么在data_type表达中应指明
其最大长度,否则系统认为其长度为1。
例4-17
declare @x char @y char 10
select @x = '123' @y = 'data_type'
print @x
print @y
运行结果如下
1
data_type
4.7.5 execute
execute 命令用来执行存储过程,其具体用法请参见“存储过程”章节。
4.7.6 kill
kill 命令用于终止某一过程的执行,其具体用法请参见“存储过程”章节。
4.7.7 print
语法如下:
print 'any ascii text' | @local_variable | @@function | string_expression
print 命令向客户端返回一个用户自定义的信息,即显示一个字符串(最长为255个字符)、局部变量或全局变量。如果变量值不是字符串的话,必须先用数据类型转换函数convert(),将其转换为字符串。其中,string_expression 是可返回一个字符串的表达式。表达式的长度可以超过8000 个字符,但超过8000 的字符将不会显示。
例4-18:
declare @x char 10 @y char 10
select @x = 'sql' @y = 'server'
print '科技'
print @x + @y
运行结果如下:
科技
sql server
4.7.8 raiserror
raiserror 命令用于在sql server 系统返回错误信息时,同时返回用户指定的信息。其具体用法请参见“存储过程”章节。
4.7.9 readtext
readtext 命令语法如下
readtext {table.column text_pointer offset size} [holdlock]
readtext 命令用于从数据类型为text、ntext 或image 的列中读取数据。命令从偏移位置offset+1 个字符起读取size 个字符,如果size 为0, 则会读取4kb 的数据。其中text_pointer 是指向存储文本的第一个数据库页的指针,它可以用textptr()函数来获取。关于textptr ()函数的使用请参见“4.8.7 text 和image 函数”。holdlock 选项用于锁定所读取的数据直到传输结束,这段时间内,其它用户只能读取数据,不能更改数据。
例4-19:
use pangu
declare @t_pointer varbinary (16)
select @t_pointer = textptr (d_intro)
from department
where d_name = '技术部'
readtext department.d_intro @t_pointer 0 42
运行结果如下:
d_intro
--------------------------------------------------------------------
进行技术研究与开发,提供最新的技术动态信息
(1 row (s) affected)
注意:如果数据列为汉字,则offset值应取o或其它偶数,如果用奇数,则会出现乱码
4.7.10 restore
restore 命令用来将数据库或其事务处理日志备份文件由存储介质回存到sql server系统中。sql server 7.0 以前的版本用的是load命令来执行此功能,从sql server 2000起,不再使用load 命令。关于restore 命令的详情,请参见“数据备份与恢复”章节
4.7.11 select
select 命令可用于给变量赋值其语法如下:
select {@local_variable = expression } [ ...n]
select 命令可以一次给多个变量赋值。当表达式expression 为列名时,select 命令可利用其查询功能一次返回多个值,变量中保存的是其返回的最后一个值。如果select命令没有返回值,则变量值仍为其原来的值。当表达式expression 是一个子查询时,如果子查询没有返回值则变量被设为null。
例4-20:
use pangu
declare @x char (30)
select @x = 'cpu'
select @x = d_name
from department
where dept_id = 9999
select @x
运行结果如下:
-----------------------
cpu
例4-21:
use pangu
declare @x char 30
select @x = 'main board'
select @x = (select d_name
from department
where dept_id=9999)
select @x
运行结果如下
-----------------------
null
4.7.12 set
set 命令有两种用法:
1 用于给局部变量赋值
其语法如下:
set { {@local_variable = expression} | { @cursor_variable =
{ @cursor_variable cursor_name
| { cursor
[forward_only | scroll]
[static | keyset | dynamic | fast_forward]
[read_only | scroll_locks | optimistic]
[type_warning]
for select_statement
[for {read only
| update [of column_name [ ...n]] } ] } } } }
其中的cursor 等参数将在“游标”一章中讲述。
在用declare 命令声明之后,所有的变量都被赋予初值null。 需要用set 命令来给变量赋值。但与select 命令不同的是,set 命令一次只能给一个变量赋值。不过由于set 命令功能更强,且更严密,因此,sql server 推荐使用set 命令来给变量赋值。
例4-22
declare @x char (30)
set @x = 'this is a set command.'
select @x
运行结果如下
------------------------------
this is a set command.
例4-23
use pangu
declare @department_num int @x char (10)
set @department_num = select count (*)
from department)
set @x = '部门数目'
print @x
select @department_num
运行结果如下
部门数目
-----------
7
2 用于设定用户执行sql 命令,时sql server 的处理选项设定
有以下几种设定方式:
关于此类set 命令的详情,请参见附录。
语法如下
shutdown [with nowait]
shutdown 命令用于停止sql server 的执行,当使用nowait 参数时,shutdown命令立即停止sql server,在终止所有的用户过程并对每一现行的事务发生一个回滚后,退出sql server。当没有用nowait 参数时,shutdown 命令将按以下步骤执行:
(1) 终止任何用户登录sql server。
(2) 等待尚未完成的transact-sql 命令或存储过程执行完毕。
(3) 在每个数据库中执行checkpoint 命令
(4) 停止sql server 的执行
例4-24
shutdown with nowait
运行结果如下:
------------------------------
changed language setting to us_english.
server shut down by request.
sql server is terminating this process.
停止sql server 的执行的方法还有好几种,我们将在“企业管理器enterprisemanager” 章节中介绍。
4.7.14 writetext
语法如下:
writetext {table.column text_pointer} [with log] {data}
writetext 命令用于向数据类型为text、 ntext 或image 的列中读取数据。其中text_pointer 是指向存储文本的第一个数据库页的指针,它可以用textptr()来获取。关于textptr 函数的使用请参见“4.8.7 text 和image 函数”。woth log选项用于记录所写入的数据。data 可为文字或变量,其最大长度为120kb。注意:writetext命令不能作用于视图。
推荐使用updatetext 命令来修改text、ntext 和image 类型的数据。因为writetext 命令将数据列的数据完全替换,而updatetext 命令可以只更改数据列的一部分。关于updatetext 命令的使用将在“数据库更新”章节中讲述。
例4-25
declare @t_pointer binary (16)
use pangu
select @t_pointer = textptr d_intro
from department
where d_name = '技术部'
writetext department.d_intro @t_pointer '进行技术研究与开发提供最新的技术动态信息'
4.7.15 use
语法如下
use {databasename}
use 命令用于改变当前使用的数据库为指定的数据库。用户必须是目标数据库的用户成员或目标数据库建有guest 用户账号时,使用use 命令才能成功切换到目标数据库。
新闻热点
疑难解答