第9章transactsql程序设计

上传人:xins****2008 文档编号:100695514 上传时间:2019-09-24 格式:DOC 页数:11 大小:58KB
返回 下载 相关 举报
第9章transactsql程序设计_第1页
第1页 / 共11页
第9章transactsql程序设计_第2页
第2页 / 共11页
第9章transactsql程序设计_第3页
第3页 / 共11页
第9章transactsql程序设计_第4页
第4页 / 共11页
第9章transactsql程序设计_第5页
第5页 / 共11页
点击查看更多>>
资源描述

《第9章transactsql程序设计》由会员分享,可在线阅读,更多相关《第9章transactsql程序设计(11页珍藏版)》请在金锄头文库上搜索。

1、第9章 transact-sql程序设计exec sp_addtype test_add,varchar(10),not nulldeclare int_var intselect int_var =12 /*给int_var赋值*/select int_var /*将int_var的值输出到屏幕上*/在一条语句中可以同时对几个变量进行赋值,例如,declare lastname char(8),firstname char(8),birthdate datetimeselect lastname=smith,firstname=david,birthdate=1985-2-20select

2、lastname,firstname,birthdate【例9-1】 使用select语句从customer表中检索出顾客编号为c0002的行,再将顾客的名字赋给变量customer。declare customer varchar(40),curdate datetimeselect customer=customer_name,curdate=getdate()from customerwhere customer_id=c0002【例9-2】 将sell_order表中的transporter_id列值为“t001”、goods_id列值为“g00003”的order_num列的值赋给局

3、部变量order_num。declare order_num floatupdate sell_orderset order_num=order_num*2/*order_num为局部变量,order_num为sell_order表中的列名称*/where transporter_id=t001 and goods_id=g00003【例9-3】 计算employee表的记录数并赋值给局部变量rows。declare rows intset rows=(select count(*) from employee)select rows【例9-4】 使服务器产生服务,并显示错误号。raiserr

4、or(miscellaneous error message,16,1) /*产生一个错误*/if error0select error as last error【例9-5】 捕捉例9-4中服务器产生的错误号,并显示出来。declare my_error intraiserror(miscellaneous error message,16,1)select my_error=errorif my_error0select my_error as last error【例9-6】 使用spid返回当前用户进程的id。select spid as id,system_user as login

5、 name,user as user name【例9-7】 在sales数据库中创建jobs表,并在表中插入带有identity列的行,并且使用identity来显示新行中所用的identity值。 create table jobs ( job_id smallint identity (1, 1) not null , job_desc varchar (50) collate chinese_prc_ci_as not null ,min_lvl tinyint not null ,max_lvl tinyint not null ) on primaryinsert into jobs

6、(job_desc,min_lvl,max_lvl)values(accountant,12,125)select identity as identity【例9-8】 创建两个过程:innerproc和outerproc。outerproc过程用来调用innerproc过程,innerproc过程用来显示nestlevel的设置。 定义innerproc为内嵌过程。create procedure innerproc asselect nestlevel as inner levelgo 定义outerproc为外层过程。create procedure outerproc asselect

7、 nestlevel as outer levelexec innerprocgo 执行outerproc。execute outerprocgo【例9-9】 使用“+”将goods表中高于9000元的商品价格增加15元。select goods_name,unit_price,(unit_price+15) as nowpricefrom goodswhere unit_price9000【例9-10】 从表department中读取manager列的各记录的实际长度。select datalength(rtrim(manager) as datalength,len(rtrim(manag

8、er) as lenfrom departmentselect soundex(1),soundex(a),soundex(计算机),soundex(abc),soundex (abcd),soundex(a12c),soundex(a数字)select difference(red,read),difference(soundex(ac),soundex(zc),difference(soundex(abc),soundex(abcd)select charindex(,,red,white,blue) select patindex(%abc%,abc123),patindex(123,a

9、bc123) 【例9-11】 在同一表达式中使用sin、atan、rand、pi、sign函数。select sin(23.45),atan(1.234),rand(),pi(),sign(-2.34)【例9-12】 用ceiling和floor函数返回大于或等于指定值的最小整数值和小于或等于指定值的最大整数值。select ceiling(123),floor(321),ceiling(12.3),ceiling(-32.1),floor(-32.1)【例9-13】 round函数的使用。select round(12.34512,3),round(12.34567,3),round(12.

10、345,-2),round(154.321,-2)select getdate()【例9-14】 使用datediff函数来确定货物是否按时送给客户。select goods_id,datediff(dd,send_date,arrival_date)from purchase_order【例9-15】 使用datename函数返回员工的出生日期的月份(mm)名称。select employee_name,(datename(mm,birth_date)from employeeselect suser_sname(0x01)【例9-16】 使用object_name函数返回已知id号的对象名

11、。select object_name(469576711)【例9-17】 利用object_id函数,根据表名返回该表的id号。select name from sysindexeswhere id=object_id(customer)【例9-18】 创建一个用户定义函数datetoquarter,将输入的日期数据转换为该日期对应的季度值。如输入2006-8-5,返回3q2006,表示2006年3季度。create function datetoquarter(dqdate datetime)returns char(6)asbeginreturn(datename(q,dqdate)+q

12、+datename(yyyy,dqdate)end【例9-19】 创建用户定义函数goodsq,返回输入商品编号的商品名称和库存量。create function goodsq(goods_id varchar(30)returns tableasreturn(select goods_name,stock_quantity from goods where goods_id =goods_id)【例9-20】 根据输入的订单编号,返回该订单对应商品的编号、名称、类别编号、类别名称。create function good_info(in_o_id varchar(10)returns goo

13、dinfo table( o_id char(6), g_id char(6), g_name varchar(50), c_id char(6), c_name varchar(20)asbegindeclare g_id varchar(10),g_name varchar(30)declare c_id varchar(10),c_name varchar(30)select g_id=goods_id from sell_orderwhere order_id1=in_o_idselect g_name=goods_name,c_id=classification_id from go

14、ods where goods_id=g_idselect c_name=classification_name from goods_classification where c_id=classification_idinsert goodinfovalues(in_o_id,g_id,g_name,c_id,c_name)returnendselect dbo.datetoquarter (2006-8-5)select * from dbo.goodsq(g00002)select * from dbo.good_info(s00002)drop functon datetoquarter【例9-21】 显示sales数据库中customer表的编号为c0001的联系人姓名。use salesgodeclare linkman_name char(8)beginselect linkman_name=(select linkman_name from customerwhere customer_id like c0001)select linkman_nameend【例9-22】 语句块嵌套举例。declare

展开阅读全文
相关资源
正为您匹配相似的精品文档
相关搜索

最新文档


当前位置:首页 > 大杂烩/其它

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号