您的位置:首页 > 数据库

第三章 t-sql程序设计基础 批处理与用户自定义函数

2010-08-10 15:20 204 查看
批处理 指包含一条或多条t-sql语句的语句组,这组语句从应用程序一次性的发送到sql server服务器执行

执行单元 sql server服务器将此批处理语句编译成一个可执行单元,这种单元成为执行单元

若批处理中的某条语句编译出错,则无法执行.若运行出错,则视情况而定

书写批处理时,go语句作为批处理命令的结束标志.当编译读取到go语句时,会把go语句前面所有的语句当做一个批处理,并将这些语句打

包发送给服务器.

go语句本身不是t-sql语句的组成部分,它只是一个用于表示批处理结束的前段指令

建立批处理时,注意 create default create rule create trigger create view等语句在同一个批处理中只能提

交一个.

不能再删除一个对象之后,在同一批处理再次引用这个对象.

不能把规则和默认值绑定到表字段或者自定义字段上之后,立即在同一个批处理中使用他们

不能定义check约束之后,立即在同一个批处理中使用

不能修改表中一个字段名之后,立即在同一个批处理中引用这个新字段

使用set语句设置的某些set选项不能应用于同一个批处理中的查询

若批处理中第一个语句是执行某个存储过程的execute语句,则execute关键字可以省略.若该语句不是第一个语句,则必须写上

用户自定义函数

use pangu

go

create function WorkYearWage(@hiredate datetime,@today datetime,@per_wage money)

returns money

as begin

declare @WorkYearWage money

set @WorkYearWage=(year(@today)-year(@hiredate))* @per_wage

return (@WorkYearWage)

end

go

调用函数

select pangu.dbo.workyearwage('1991-7-1',getdate(),15) as work_year_wage

创建内嵌表值用户自定义函数

use sample

go

create function orderfirms(@productid varchar(30))

return table

as

return (select * from products p where p.p_id = @ productid)

go

注意一点:一定不要把if ... exists和聚合函数一起使用,因为聚合函数总是返回数据,即使数据是0.

例如;if exists(select count(*) from titles where pub_id=’9933’)

对于exists来说,即使是0,他也认为是真.只要有值就为真
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: