资源描述:
《数据库 Transact-SQL程序设计》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库。
1、第9章Transact-SQL程序设计EXECsp_addtypetest_add,'Varchar(10)','NOTNULL'DECLARE@int_varintSELECT@int_var=12/*给@int_var赋值*/SELECT@int_var/*将@int_var的值输出到屏幕上*/在一条语句中可以同时对几个变量进行赋值,例如,DECLARE@LastNamechar(8),@Firstnamechar(8),@BirthDatedatetimeSELECT@LastName='Smith',@Firstname='
2、David',@BirthDate='1985-2-20'SELECT@LastName,@Firstname,@BirthDate【例9-1】使用SELECT语句从customer表中检索出顾客编号为C0002的行,再将顾客的名字赋给变量@customer。DECLARE@customervarchar(40),@curdatedatetimeSELECT@customer=customer_name,@curdate=getdate()FROMcustomerWHEREcustomer_id='C0002'【例9-2】将sell
3、_order表中的transporter_id列值为“T001”、goods_id列值为“G00003”的order_num列的值赋给局部变量@order_num。DECLARE@order_numfloatUPDATEsell_orderSET@order_num=order_num*2/*@order_num为局部变量,order_num为sell_order表中的列名称*/WHEREtransporter_id='T001'ANDgoods_id='G00003'【例9-3】计算employee表的记录数并赋值给局部变量@ro
4、ws。DECLARE@rowsintSET@rows=(SELECTCOUNT(*)FROMemployee)SELECT@rows【例9-4】使服务器产生服务,并显示错误号。raiserror('miscellaneouserrormessage',16,1)/*产生一个错误*/if@@error<>0SELECT@@erroras'lasterror'【例9-5】捕捉例9-4中服务器产生的错误号,并显示出来。DECLARE@my_errorintRAISERROR('miscellaneouserrormessage',16,1
5、)SELECT@my_error=@@errorIF@my_error<>0SELECT@my_erroras'lasterror'【例9-6】使用@@spid返回当前用户进程的ID。SELECT@@spidas'ID',SYSTEM_USERAS'LoginName',USERAS'UserName'【例9-7】在Sales数据库中创建jobs表,并在表中插入带有identity列的行,并且使用@@identity来显示新行中所用的identity值。CREATETABLEjobs([job_id][smallint]IDENTI
6、TY(1,1)NOTNULL,[job_desc][varchar](50)COLLATEChinese_PRC_CI_ASNOTNULL,[min_lvl][tinyint]NOTNULL,[max_lvl][tinyint]NOTNULL)ON[PRIMARY]INSERTINTOjobs(job_desc,min_lvl,max_lvl)VALUES('Accountant',12,125)SELECT@@IDENTITYAS'Identity'【例9-8】创建两个过程:innerproc和outerproc。outerpro
7、c过程用来调用innerproc过程,innerproc过程用来显示@@nestlevel的设置。①定义innerproc为内嵌过程。CREATEPROCEDUREinnerprocasSELECT@@nestlevelAS'InnerLevel'GO②定义outerproc为外层过程。CREATEPROCEDUREouterprocasSELECT@@nestlevelAS'OuterLevel'EXECinnerprocGO③执行outerproc。EXECUTEouterprocGO【例9-9】使用“+”将goods表中高于9
8、000元的商品价格增加15元。SELECTgoods_name,unit_price,(unit_price+15)ASnowpriceFROMgoodsWHEREunit_price>9000【例9-10】从表department中