5.1.4
USESAMPLEGO--创建“字符数据”数据表CREATETABLE字符数据(char_stringchar(5),varchar_stringvarchar(5),text_stringtext)GO--向“字符数据”数据表中添加两行数据INSERTINTO字符数据VALUES(“test”,“test”,“thisisatestfortextdatatype”)INSERTINTO字符数据VALUES(“thisisatestforchardatatype”,“thisisatestforvarchardatatype”,“thisisatestfortextdatatype”)GO--从“字符数据”数据表中检索数据SELECT*FROM字符数据GO
5.2.1
USEsampleGO--创建“整型数据”数据表CREATETABLE整型数据(bigint_numberbigint,int_numberint,
smallint_numbersmallint,tinyint_numbertinyint)GO--向“整型数据”数据表中添加两行数据INSERTINTO整型数据VALUES(9223372036854775807,2147483647,32767,255)INSERTINTO整型数据VALUES(-9223372036854775808,-2147483648,-32768,0)GO--从“整型数据”数据表中检索数据SELECT*FROM整型数据GO
5.2.2
USEsampleGO--创建“数字数据”数据表CREATETABLE数字数据(decimal_numberdecimal(8,6),numeric_numbernumeric(5,3))GO--向“数字数据”数据表中添加两行数据INSERTINTO数字数据VALUES(99.99999788,50)INSERTINTO数字数据VALUES(99.999999,300)GO--从“数字数据”数据表中检索数据SELECT*
FROM数字数据GO
5.3.3
USEsampleGO
--创建“货币数据”数据表CREATETABLE货币数据(money_numbermoneysmallmoney_numbersmallmoney)GO--向数据表中添加两条合理记录INSERTINTO货币数据VALUES($123.45,$1)INSERTINTO货币数据VALUES($123.45,CAST('$111,111.45'ASMONEY))GO--向数据表中添加带有逗号分隔符的货币数据INSERTINTO货币数据VALUES($123.45,$111,111.45)GO--从数据表中检索数据SELECT*FROM货币数据GO
5.6
USEsampleGO
--创建“二进制数据”数据表
CREATETABLE二进制数据(binary_numberbinary(6)vbinary_numbervbinary(6))GO--向数据表中添加三条记录INSERTINTO二进制数据VALUES(0xABCDE,0xABCDE)INSERTINTO二进制数据VALUES(0xABCDEA,0x46F)INSERTINTO二进制数据VALUES(0xABCDEABCDEABCDE,0x46F)GO--从数据表中检索数据SELECT*FROM二进制数据GO
5.8.5
USEsampleGO
--创建“特殊数据”数据表CREATETABLE特殊数据(sql_variant_datasql_variant)GO--向数据表中添加几条带有不同数据类型的记录INSERTINTO特殊数据VALUES(‘Thisisasql_variantdatatypetest’)INSERTINTO特殊数据VALUES(123456)INSERTINTO特殊数据
VALUES(‘April15,1998’)GO--从数据表中检索数据SELECT*FROM特殊数据GO
5.9
--定义变量DECLARE@Table_ExampleTABLE(Col_numintPRIMARYKEY,Col_textchar(50))--向该变量中添加两行内容INSERTINTO@Table_ExampleVALUES(1,‘thisisa’)INSERTINTO@Table_ExampleVALUES(2,‘tabledatatypeexample’)--从临时表中检索SELECT*FROM@Table_ExampleGO
5.10
--创建birthday用户定义数据类型,它使用了datetime基本数据类型,允许NULLUSEsampleEXECsp_addtypebirthday,datetime,‘NULL’GO--在数据表定义时使用birthday用户定义数据类型CREATETABLE特殊数据(char_datachar(20),birthday_databirthday)GO--向数据表中添加几条记录
INSERTINTO特殊数据VALUES(‘Sarah’,‘02/22/1976’)INSERTINTO特殊数据VALUES(‘Tina’,‘04/15/1998’)GO--从数据表中检索数据SELECT*FROM特殊数据GO--删除birthday用户定义数据类型EXECsp_droptypebirthday
6.1.2
CREATEDATABASEdatabase_name[ON[PRIMARY][
[1,...n]][,[1,...n]]][LOGON{[1,...n]}][FORLOAD|FORATTACH]::=([NAME=logical_file_name,]FILENAME=‘os_file_name’[,SIZE=size][,MAXSIZE={max_size|UNLIMITED}][,FILEGROWTH=growth_increment])[,...n]::=FILEGROUPfilegroup_name[,...n]例2:CREATEDATABASEsalesON(NAME=‘sales_dat’,FILENAME=‘c:\programfiles\microsoftsqlserver\mssql\data\sales_dat.mdf’,SIZE=5
MAXSIZE=30FILEGROWTH=2)
LOGON(NAME=‘sales_log’,FILENAME=‘c:\programfiles\microsoftsqlserver\mssql\data\sales_log.ldf’,SIZE=2MBMAXSIZE=20MBFILEGROWTH=2MB)GOCREATEDATABASEReportONPRIMARY(NAME=Rep1,FILENAME=‘c:\programfiles\microsoftsqlserver\mssql\data\rep1_dat.mdf’SIZE=5MB,MAXSIZE=10MB,FILEGROWTH=1MB),(NAME=Rep2,FILENAME=‘c:\programfiles\microsoftsqlserver\mssql\data\rep2_dat.ndf’SIZE=5MB,MAXSIZE=10MB,FILEGROWTH=1MB),(NAME=Rep3,FILENAME=‘c:\programfiles\microsoftsqlserver\mssql\data\rep3_dat.ndf’SIZE=5MB,MAXSIZE=10MB,FILEGROWTH=1MB)
LOGON(NAME=Rep1_log,FILENAME=‘c:\programfiles\microsoftsqlserver\mssql\data\rep1_log.ldf’SIZE=5MB,MAXSIZE=10MB,FILEGROWTH=1MB),
(NAME=Rep2_log,FILENAME=‘c:\programfiles\microsoftsqlserver\mssql\data\rep2_log.ldf’SIZE=5MB,MAXSIZE=10MB,FILEGROWTH=1MB)GO
6.3.1
EXECsp_dboption‘产品数据库’,‘SINGLEUSER’,TrueEXECsp_renamedb‘产品数据库’,‘product’EXECsp_dboption‘product’,‘SINGLEUSER’,False
6.3.2
ALTERDATABASE员工数据库MODIFYFILE(NAME=‘员工数据库_dat’,SIZE=15)ALTERDATABASE产品数据库MODIFYFILE(name=‘产品数据库_log’,SIZE=3)
DBCCSHRINKFILE(file_name{[,target_size]|[,{EMPTYFILE|NOTRUNCATE|TRUNCATEONLY}]})USE产品数据库DBCCDHRINKFILE(‘产品数据库_dat’,6)
6.3.3
ALTERDATABASEdatabase{ADDFILE[,...n][TOFILEGROUPfilegroup_name]|ADDLOGFILE[,...n]|REMOVEFILElogical_file_name
|ADDFILEGROUPfilegroup_name|REMOVEFILEGROUPfilegroup_name|MODIFYFILE|MODIFYFILEGROUPfile_group_namefilegroup_property}::=(NAME=logical_file_name[,FILENAME=‘os_file_name’][,SIZE=size][,MAXSIZE={max_size|UNLIMITED}][,FILEGROWTH=growth_increment])例1:DROPDATABASETempCREATEDATABASETempON(NAME='Temp1_dat',FILENAME='c:\programfiles\microsoftsqlserver\mssql\data\temp1_dat.mdf',SIZE=5MB,MAXSIZE=15MB,FILEGROWTH=1)LOGON(NAME='Temp1_log',FILENAME='c:\programfiles\microsoftsqlserver\mssql\data\temp1_log.ldf',SIZE=5MB,MAXSIZE=15MB,FILEGROWTH=1)GOALTERDATABASETempADDFILE(
NAME='Temp2_dat',FILENAME='c:\programfiles\microsoftsqlserver\mssql\data\temp2_dat.ndf',SIZE=5MB,MAXSIZE=15MB,FILEGROWTH=1)GOALTERDATABASETempADDLOGFILE(NAME='Temp2_log',FILENAME='c:\programfiles\microsoftsqlserver\mssql\data\temp2_log.ldf',SIZE=5MB,MAXSIZE=15MB,FILEGROWTH=1)GO例2:ALTERDATABASETempMODIFYFILE(NAME=Temp1_dat,SIZE=10,MAXSIZE=20,FILEGROWTH=2)例3:ALTERDATABASETempADDFILEGROUPTempFileGroupGOALTERDATABASETempADDFILE(NAME='Temp3_dat',FILENAME='c:\programfiles\microsoftsqlserver\mssql\data\temp3_dat.ndf',SIZE=3,
MAXSIZE=10,FILEGROWTH=1),(NAME='Temp4_dat',FILENAME='c:\programfiles\microsoftsqlserver\mssql\data\temp4_dat.ndf',SIZE=3,MAXSIZE=10,FILEGROWTH=1)TOFILEGROUPTempFileGroupGOALTERDATABASETempREMOVEFILETemp2_logGO
6.4.2
例1:DROPDATABASE产品数据库,员工数据库
7.2.1
CREATETABLE语句创表的语法如下:CREATETABLE[database_name.[owner].|owner.]table_name({|column_nameAScomputed_column_expression|}[,...n])[ON{filegroup|DEFAULT}][TEXTIMAGE_ON{filegroup|DEFAULT}]
::={column_namedata_type}[[DEFAULTconstant_expression]
|[IDENTITY[(seed,increment)]]][][...n]
7.2.2
CREATETABLEstudent(intNOTNULL,char(8))
[CONSTRAINTconstraint_name]PRIMARYKEY[CLUSTERED|NONCLUSTERED][(字段名[,...n])]
CREATETABLEproject(项目编号intCONSTRAINTPK_PnoPRIMARYKEY,项目名称varchar(40))
CREATETABLEproject(项目编号intPRIMARYKEY,项目名称varchar(40))
CREATETABLEproject(项目编号int,项目名称varchar(40),CONSTRAINTPK_Pno_PnamePRIMARYKEY(项目编号,项目名称))[CONSTRAINTconstraint_name]UNIQUE[CLUSTERED|NONCLUSTERED][(字段名[,...n])]CREATETABLEproject
(项目编号intCONSTRAINTPK_PnoPRIMARYKEY,项目名称char(20)CONSTRAINTUN_PnameUNIQUE)
CREATETABLEproject(项目编号intPRIMARYKEY,项目名称char(20)UNIQUE
CREATETABLEproject(项目编号intCONSTRAINTPK_PnoPRIMARYKEY,项目名称char(20),项目负责人char(20),CONSTRAINTUN_Pname_PmUNIQUE(项目名称,项目负责人))[CONSTRAINTconstraint_name][FOREIGNKEY]REFERENCESref_table[(ref_column)][ONDELETE{CASCADE|NOACTION}][ONUPDATE{CASCADE|NOACTION}][NOTFORREPLICATION]--创建数据表employeesCREATETABLEemployees(员工编号intPRIMARYKEY,员工char(20)UNIQUE)GO--创建数据表projectCREATETABLEproject(项目编号intPRIMARYKEY,
项目名称char(20),项目负责人char(20)FOREIGNKEYREFERENCEStemp9(员工)ONDELETECASCADE)GO
CONSTRAINTconstraint_name]CHECK(logical_expression)CREATETABLEemployees(员工编号intNOTNULLPRIMARYKEY,员工char(20)UNIQUE,工资intNOTNULLCONSTRAINTCK_EsCHECK(工资>=1000AND工资<=20000))
7.2.3
CREATERULErule_nameAScondition_expression
EXECsp_bindrule[@rulename=]‘rule_name’,[@objname=]‘object_name’CREATETABLEemployees(员工编号intNOTNULLPRIMARYKEY,员工char(20),工资intNOTNULL)CREATERULERU_salaryAS@salary>=1000AND@salary<=20000GOEXECsp_bindrule‘RU_salary’,‘employee.工资’GO
7.2.4
CREATEDEFAULTdefaultASconstant_expressionsp_bindefault[@defname=]‘default’,[@objname=]‘object_name’CREATEDEFAULTDE_salaryas1000GOEXECsp_bindefault‘DE_salary’,‘employee.工资’GO
7.2.5
ALTERTABLEtableALTERCOLUMNcolumn_namenew_data_type[(precision[,scale])][NULL|NOTNULL]--创建数据表projectCREATETABLEproject(项目编号intPRIMARYKEY,项目名称char(20)NOTNULL)--使用sp_help察看数据表的定义EXECsp_helpprojectGO--修改相应的字段定义ALTERTABLEprojectALTERCOLUMN项目名称varchar(25)NULL--再次察看数据表的定义EXECsp_helpprojectGOALTERTABLEtableADD{[column_definition]|
[column_nameAScomputed_column_expression]}--向数据表中添加字段ALTERTABLEprojectADD项目负责人varchar(15),
项目难度级别intDEFAULT1,预计工期AS项目难度级别*20--察看数据表定义EXECsp_helpprojectALTERTABLEtableDROPCOLUMNcolumn_name[,...n]ALTERTABLEprojectDROPCOLUMN项目负责人,预计工期ALTERTABLEtable[WITHCHECK|WITHNOCHECK]ADDCONSTRAINTconstraint_nameconstraint_definition[,...n]USEcompany--创建数据表employeeCREATETABLEemployee(员工编号intPRIMARYKEY,员工char(20)UNIQUE)GO--创建数据表projectCREATETABLEproject(项目编号intNOTNULL,项目负责人char(20),项目难度级别int)GO--向project数据表中添加约束ALTERTABLEprojectADDCONSTRAINTPK_PnoPRIMARYKEY(项目编号),CONSTRAINTFK_PmFOREIGNKEY(项目负责人)REFERENCESemployee(员工),CONSTRAINTCK_PlCHECK(项目难度级别>=1AND项目难度级别<=5)
GOALTERTABLEtableDROPCONSTRAINTconstraint_name[,...n]ALTERTABLEprojectDROPCONSTRAINTFK_Pm,CK_Pl
7.2.6
DROPTABLEtable[,...n]DROPTABLEemployee,projectDROPTABLEcompany2.dbo.employee
8.1.1
SELECT语句的基本结构如下:SELECTselect_list[INTOnew_table_name]FROMtable_list[WHEREsearch_conditions][GROUPBYgroup_by_list][HAVINGsearch_conditions][ORDERBYorder_list[ASC|DESC]]
8.1.2
SELECT*FROMChenHong.TableX
SELECT*FROMSample.员工数据表SELECTDISTINCT员工数据表.员工编号,项目数据表.项目名称FROM员工数据表JOIN项目数据表ON(员工数据表.员工编号=项目数据表.负责人)
8.2.1
USESampleSELECT所属部门
FROM员工数据表
USESampleSELECTDISTINCT所属部门FROM员工数据表
8.3
SELECT*FROMSAMPLE.员工数据表SELECT员工数据表.员工编号,项目数据表.项目名称FROM员工数据表JOIN项目数据表ON(员工数据表.员工编号=项目数据表.负责人)
SELECTEMP.员工编号,EMP.员工,SP.部门名称FROM员工数据表ASEMP,(SELECT部门数据表.部门编号,部门数据表.部门名称FROM部门数据表WHERE部门数据表.部门编号>2)ASSPWHEREEMP.部门编号=SP.部门编号
8.4.1
SELECT员工FROMSample.员工数据表WHERE员工工资>2000SELECT员工FROMSAMPLE.员工数据表WHERE工资BETWEEN2000AND3000ORDERBY工资SELECT员工FROMSAMPLE.员工数据表WHERE工资>2000AND工资<3000ORDERBY工资
SELECT员工FROMSAMPLE.员工数据表WHERE工资NOTBETWEEN2000AND3000ORDERBY工资SELECT员工FROMSAMPLE.员工数据表WHERE工资>3000OR工资<2000ORDERBY工资
8.4.2
SELECT员工,部门FROMSAMPLE.员工数据表WHERE部门IN(1,3)GROUPBY部门SELECT员工,部门FROMSAMPLE.员工数据表WHERE部门=1OR部门=3GROUPBY部门
USESAMPLESELECT员工,部门FROM员工数据表WHERE员工编号IN(SELECT负责人FROM项目数据表WHERE结束日期<=‘January1,2002’)
USESAMPLESELECT员工,部门FROM员工数据表WHERE员工编号NOTIN(SELECT负责人FROM项目数据表
WHERE结束日期<=‘January1,2002’)
8.4.3
SELECT项目名称FROMSAMPLE.项目数据表WHERE项目名称LIKE‘SiS%’SELECT项目名称FROMSAMPLE.项目数据表WHERE项目名称NOTLIKE‘SiS%’
WHEREColumn1LIKE‘%54/%%’ESCAPE‘/’
WHEREColumn1LIKE‘%54[%]%’
8.4.4
USESAMPLESELECT项目名称FROM项目数据库WHERE项目名称LIKE‘SiS%’and项目名称ISNOTNULL
USESAMPLESELECT项目名称FROM项目数据库WHERE项目名称IS(NOT)NULL
8.4.5
SELECT项目名称FROMSAMPLE.项目数据表WHERE项目名称LIKE‘SiS%’AND结束日期<=‘January1,2002’
SELECT项目名称FROMSAMPLE.项目数据表WHERE项目名称LIKE‘SiS%’OR项目名称LIKE‘Pet%’SELECT项目名称FROMSAMPLE.项目数据表WHERE项目名称NOTLIKE‘SiS%’SELECT所属部门,AVG(工资)AS平均工资FROM员工数据库GROUPBY所属部门SELECT所属部门,性别,AVG(工资)AS平均工资FROM员工数据库GROUPBY所属部门,性别
8.4.6
SELECT所属部门,AVG(工资)AS平均工资FROM员工数据库GROUPBY所属部门HAVING平均工资>=2000
8.4.7
SELECT所属部门,AVG(工资)AS平均工资FROM员工数据库WHERE所属部门NOTLIKE‘办公室’GROUPBY所属部门SELECT所属部门,AVG(工资)AS平均工资FROM员工数据库WHERE所属部门NOTLIKE‘办公室’GROUPBYALL所属部门
8.4.8
SELECT所属部门,性别,AVG(工资)FROM员工数据表GROUPBY所属部门,性别WITHCUBE
8.4.9
SELECT所属部门,性别,AVG(工资)FROM员工数据表GROUPBY所属部门,性别WITHROLLUPSELECT所属部门,性别,AVG(工资)FROM员工数据表GROUPBY性别,所属部门WITHROLLUP
8.5
USESAMPLESELECT*FROM员工数据库ORDERBY工资
USESAMPLESELECT*FROM员工数据库ORDERBY所属部门,工资DESC
USESAMPLESELECT所属部门,AVG(工资)AS平均工资FROM员工数据库GROUPBY所属部门ORDERBY工资平均值
USESAMPLESELECT员工,所属部门,工资
FROM员工数据表COMPUTESUM(工资)USESAMPLESELECT员工,所属部门,工资FROM员工数据表ORDERBY所属部门COMPUTESUM(工资)BY所属部门
8.7
SELECT*FROMSAMPLE.员工数据表UNIONSELECT*FROMSAMPLEBEIJING.员工数据表ORDERBY工资
8.8
USESAMPLESELECTe.员工编号,e.员工FROM员工数据表ASe
USESAMPLESELECT员工数据表.员工编号,e.员工,e.工资FROM员工数据表ASe
8.9.1
USESAMPLESELECT所属部门,SUM(工资)FROM员工数据表GROUPBY所属部门
USESAMPLE
SELECT所属部门,AVG(工资)FROM员工数据表GROUPBY所属部门
8.9.2
USESAMPLESELECT所属部门,MAX(工资)FROM员工数据表GROUPBY所属部门
USESAMPLESELECT所属部门,MAX(员工)FROM员工数据表GROUPBY所属部门
8.9.3
USESAMPLESELECT所属部门,MIN(工资)FROM员工数据表GROUPBY所属部门
USESAMPLESELECT所属部门,MIN(员工)FROM员工数据表GROUPBY所属部门
8.9.4
USESAMPLESELECTCOUNT(*)FROM项目数据库
WHERE结束日期<=‘January1,2002’
USESAMPLESELECTCOUNT(DISTINCT负责人)FROM项目数据库WHERE结束日期<=‘January1,2002’
8.10.1
SELECT*FROM员工数据表INNERJOIN项目数据表ON员工数据表.员工编号=项目数据表.负责人
SELECT*FROM员工数据表LEFTJOIN项目数据表ON员工数据表.员工编号=项目数据表.负责人
SELECT*FROM员工数据表RIGHTJOIN项目数据表ON员工数据表.员工编号=项目数据表.负责人
USESAMPLESELECT*FROM员工数据表CROSSJOIN项目数据表
8.10.2
--使用WHERE分句进行内联接SELECT*FROM员工数据表,项目数据表WHERE员工数据表.员工编号=项目数据表.负责人--相当于:SELECT*FROM员工数据表INNERJOIN项目数据表ON员工数据表.员工编号=项目数据表.负责人
--使用WHERE分句进行左向外联接SELECT*FROM员工数据表,项目数据表WHERE员工数据表.员工编号*=项目数据表.负责人--相当于:SELECT*FROM员工数据表LEFTJOIN项目数据表ON员工数据表.员工编号=项目数据表.负责人--使用WHERE分句进行右向外联接SELECT*FROM员工数据表,项目数据表WHERE员工数据表.员工编号=*项目数据表.负责人--相当于:SELECT*FROM员工数据表RIGHTJOIN项目数据表ON员工数据表.员工编号=项目数据表.负责人
8.11.1
USESAMPLESELECT员工FROM员工数据表WHERE员工编号IN(SELECTDISTINCT负责人FROM项目数据表WHERE结束日期<‘January1,2002’)
USESAMPLESELECT员工FROM员工数据表WHERE员工编号NOTIN(SELECTDISTINCT负责人FROM项目数据表)
8.11.2
USESAMPLESELECT员工FROM员工数据表WHERE员工编号=(SELECTDISTINCT负责人FROM项目数据表WHERE项目名称=‘SiS’)
USESAMPLESELECT项目名称FROM项目数据表WHERE项目收入>(SELECTAVG(工资)FROM员工数据表)
8.11.3
--所有正在负责项目的员工USESAMPLESELECT员工FROM员工数据表WHEREEXISTS(SELECT*FROM项目数据表WHERE员工数据表.员工编号=项目数据表.负责人)--所有没有负责项目的员工USESAMPLESELECT员工FROM员工数据表
WHERENOTEXISTS(SELECT*FROM项目数据表WHERE员工数据表.员工编号=项目数据表.负责人)
8.12.1
INSERTINTO员工数据表(员工,性别,所属部门,工资)VALUES(‘王秋萍’,‘女’,‘项目部’,‘3000’)INSERTINTO员工数据表(员工,性别,所属部门,工资)SELECT*FROM临时员工数据表
8.12.2
USESAMPLEUPDATE员工数据表SET工资=3000WHERE所属部门=‘项目部’
8.12.3
USESAMPLEGO--删除来自SiS公司的所有项目DELETE项目数据表WHERE客户=1GO--删除SiS客户DELETE客户数据表WHERE客户编号=1GO
--删除用于存储SiS公司临时信息的数据表DELETESiS_TEMPDROPTABLESiS_TEMP
9.1.1
USESAMPLEGO--将项目部的工资更新为3000UPDATE员工数据表SET工资=3,000WHERE所属部门=‘项目部’--检查是否出现限制检查冲突IF@@ERROR=547print“出现限制检查冲突,请检查需要更新的数据限制”
USESAMPLEGO--将录入部员工的工资更新为3000UPDATE员工数据表SET工资=3000WHERE所属部门=‘录入部’--如果没有发生记录更新,则发出警告信息IF@@ROWCOUNT=0print‘警告:没有发生记录更新’
SELECT@@VERSION
9.1.2
DECLARE@Temp_CounterINT
SET@Temp_Count=0
USESAMPLEGO--声明局部变量DECLARE@Max_SalaryINT--将其赋值为全体员工的工资最大值SELECT@Max_Salary=MAX(工资)FROM员工数据表GO
9.2.1
USESAMPLEGOSELECTCOL_LENGTH(‘员工数据表’,‘员工’)ASName_Col_Length,DATALENGTH(员工)ASName_Data_LengthFROM员工数据表
9.2.2
DECLARE@TodayDATETIMESET@Today=GETDATE()SELECTMONTH(@Today),DAY(@Today),YEAR(@Today)
9.2.3
USESAMPLESELECT员工+‘,’+员工性别+CHAR(13)+所属部门FROM员工数据表WHERE员工编号=1
9.2.4
USESAMPLESELECT所属部门,ROUND(AVG(工资))FROM员工数据表GROUPBY所属部门
9.2.5
CREATEFUNCTION函数名称(参数名称AS数据类型)RETURNS返回数据类型BEGIN函数内容RETURN表达式END
--创建奖金计算函数CREATEFUNCTIONBonus(@SalaryASINT)RETURNSINTBEGIN--奖金数量为工资数量的30%RETURN(@Salary*0.3)END--输出员工和奖金数目SELECT员工,Bonus(工资)AS奖金FROM员工数据表
9.3.1
USESAMPLEGO--声明用于发布消息的变量DECLARE@MessageVARCHAR(200)--判断是否有员工在办公室工作IFEXIST(SELECT*FROM员工数据表WHERE所属部门=‘办公室’)--如果有,则列出BEGINSET@Message=“下列人员在办公室工作:”PRINT@MessageSELECT员工FROM员工数据表WHERE所属部门=‘办公室’END--否则,输出没有人在办公室工作的消息ELSEBEGINSET@Message=“没有人在办公室工作”PRINT@MessageENDGO
9.3.2
USESAMPLEGO--声明用于发布消息的变量DECLARE@MessageVARCHAR(200)--判断是否存在工资超过5000的员工IFEXIST(SELECT*FROM员工数据表WHERE工资>5000)--如果有,则列出BEGIN
SET@Message=“下列人员在的工资超过5000:”PRINT@MessageSELECT员工,工资FROM员工数据表WHERE工资>5000END--否则,输出没有工资在5000元以上的员工ELSEBEGINSET@Message=“没有工资在5000元以上的员工”PRINT@MessageENDGO
9.3.3
WHILE逻辑表达式BEGIN…BREAK…ENDWHILE逻辑表达式BEGIN…CONTINUE…END
USESAMPLEGO
USESAMPLEGO--根据是否存在员工的奖金少于300而确定循环是否继续执行
WHILEEXISTS(SELECT*FROM员工数据表WHERE工资*0.3<300)--循环开始BEGIN--将所有员工的工资加500UPDATE员工数据表SET工资=工资+500--如果有员工的工资超过了10000则跳出循环IF(SELECTMAX(工资)FROM员工数据表)>10000BREAKEND--循环结束
9.3.4
USESAMPLEGOSELECT,“部门说明”=--分别为各个部门添加说明CASE所属部门WHEN‘办公室’THEN‘在办公室工作,该部门主要负责办公室事务。’WHEN‘项目部’THEN‘在项目部工作,该部门主要负责项目事务。’WHEN‘录入部’THEN‘在录入部工作,该部门主要负责录入事务。’WHEN‘检验部’THEN‘在检验部工作,该部门主要负责检验事务。’ENDFROM员工数据表--按照排序ORDERBY
9.3.6
WAITFORDELAY时间间隔
WAITFORTIME时间值
USESAMPLEGO--指定在执行SELECT语句之前等待两秒WAITFORDELAY‘00:00:02’--执行查询SELECT,性别FROM员工数据表WHERE所属部门=‘项目部’
9.3.7
GOTO标签名称
USESAMPLEGOIF(SELECTMAX(工资)FROM员工数据表)>10000GOTOdecrease_salary…decrease_salary:…
9.4.1
DECLARE游标名称CURSOR[LOCAL|GLOBAL][FORWARD_ONLY|SCROLL][READ_ONLY]FOR选择语句[FORUPDATE[OF字段名称1,字段名称2,…]]
USESAMPLE
GO--声明游标DECLAREPM_CursorCURSORFORSELECT*FROM员工数据表WHERE所属部门=‘项目部’ORDERBYFORREADONLY
9.4.2
OPEN游标名称
USESAMPLEGO--声明项目负责人游标DECLAREPM_CursorCURSORFORSELECT*FROM员工数据表WHERE所属部门=‘项目部’ORDERBYFORREADONLY--打开项目负责人游标OPENPM_Cursor--读取结果集中的数据FETCHNEXTFROMPM_Cursor--根据@@FETCH_STATUS来确定是否继续读取数据WHILE@@FETCH_STATUS=0BEGINFETCHNEXTFROMPM_CursorEND
9.4.3
CLOSE游标名称
DEALLOCATE游标名称
CLOSEPM_CursorDEALLOCATEPM_Cursor
9.5
USESAMPLEGO--检索项目部的员工SELECT*FROM员工数据表WHERE所属部门=‘项目部’/*检索录入部的员工*/SELECT*FROM员工数据表WHERE所属部门=‘录入部’--检索工资高于2000的员工--并输出和工资SELECT,/*性别,*/工资FROM员工数据表WHERE工资>2000
9.6
--该批处理执行打开数据库USEpubsGO/*批处理结束标志*/--该批处理检索项目部员工SELECT*FROM员工数据表
WHERE所属部门=‘项目部’AND工资>2000ORDERBYGO--该批处理创建视图CREATEVIEWPM_ViewASSELECT*FROM员工数据表WHERE所属部门=‘项目部’GO--该批处理使用视图检索数据SELECT*FROMPM_ViewGO
10.3.1
CREATEVIEWview_name[(column[,...n])][WITHENCRYPTION]ASselect_statement[WITHCHECKOPTION]USEcompanyGO--创建视图CREATEVIEW项目信息视图ASSELECTa.项目名称,b.客户名称,c.,a.开始日期,a.预计工期FROMprojectASaINNERJOINcustomerASbONa.客户编号=b.客户编号INNERJOINemployeeAScONa.负责人编号=c.编号WHEREa.客户编号=b.客户编号ANDa.负责人编号=c.编号GO--察看视图定义
EXECsp_helptext‘项目信息视图’
USEcompanyGO--创建视图CREATEVIEW项目信息视图(项目名称,项目合作客户,项目负责人,项目开始日期,项目预计工期)ASSELECTa.项目名称,b.客户名称,c,a.开始日期,a.预计工期FROMprojectASaINNERJOINcustomerASbONa.客户编号=b.客户编号INNERJOINemployeeAScONa.负责人编号=c.编号WHEREa.客户编号=b.客户编号ANDa.负责人编号=c.编号GO--察看视图信息EXECsp_helptext‘项目信息视图’
EXECsp_helptext项目信息视图
USEcompanyGO--创建视图CREATEVIEW项目信息视图(项目名称,项目合作客户,项目负责人,项目开始日期,项目预计工期)WITHENCRYPTIONASSELECTa.项目名称,b.客户名称,c.,a.开始日期,a.预计工期FROMprojectASaINNERJOINcustomerASbONa.客户编号=b.客户编号INNERJOINemployeeAScONa.负责人编号=c.编号WHEREa.客户编号=b.客户编号ANDa.负责人编号=c.编号GO
CREATEVIEW男员工资料视图ASSELECT*FROMemployeeWHERE性别=‘男’
INSERTINTO男员工资料视图(编号,,性别,工资)VALUES(16,‘汪玉霞’,‘女’,‘2500’)
CREATEVIEW男员工资料视图ASSELECT*FROMemployeeWHERE性别=‘男’WITHCHECKOPTION
10.3.2
ALTERVIEWview_name[(column[,...n])][WITHENCRYPTION]ASselect_statement[WITHCHECKOPTION]
USEcompanyGO--创建视图CREATEVIEW男员工工资视图WITHENCRYPTIONASSELECT*FROMemployeeWHERE性别=‘男’/*加密*/
--察看视图定义EXECsp_helptext‘男员工工资视图’GO--修改视图定义ALTERVIEW男员工工资视图(男员工,员工工资)/*定义别名*/ASSELECT员工,工资FROMemployeeWHERE性别=‘男’WITHCHECKOPTIONGO--再次察看视图定义EXECsp_helptext‘男员工工资视图’/*添加WITHCHECKOPTION*//*由于视图定义加密,此处无法看到视图定义*/
10.3.3
DROPVIEWview_name[,...n]USEcompanyGO--删除视图DROPVIEW男员工工资视图GO
10.4.1
USEcompanyGO--检索项目的预计工期小于60天的记录SELECT*FROM项目信息视图WHERE项目预计工期<60GO
10.4.2
USEcompany
GO--创建查询CREATEVIEW项目信息视图(项目名称,项目合作客户,项目负责人,项目开始日期,项目预计工期)ASSELECTa.项目名称,b.客户名称,c.,a.开始日期,a.预计工期FROMprojectASaINNERJOINcustomerASbONa.客户编号=b.客户编号INNERJOINemployeeAScONa.负责人编号=c.工编号WHEREa.客户编号=b.客户编号ANDa.负责人编号=c.编号GO--插入记录INSERTINTO项目信息视图(项目名称,项目开始日期,项目预计工期)VALUES(‘LYS’,‘2000-10-01’,‘90’)GOINSERTINTO项目信息视图(项目合作客户)VALUES(‘RealSimCo.’)GOINSERTINTO项目信息视图(项目负责人)VALUES(‘陈小玉’)GO
10.4.3
USEcompanyGO--更新数据UPDATE项目信息视图SET项目预计工期=120WHERE项目名称=‘市场调查’GOUPDATE项目信息视图
SET项目负责人=‘刘飞飞’WHERE项目负责人='刘菲菲'GO
10.4.4
DELETEview_nameWHEREsearch_condition
11.3.1
USEcompanyGOCREATETABLEproduct_temp(产品IDint,产品名称char(20)UNIQUECLUSTERED)GOEXECsp_helpindexproduct_temp
USEcompanyGOCREATETABLEproduct_temp(产品IDintprimarykey,产品名称char(20))GOEXECsp_helpindexproduct_temp
11.3.4
CREATE[UNIQUE][CLUSTERED|NONCLUSTERED]INDEXindex_nameONtable(column[,...n])[WITH[PAD_INDEX][,FILLFACTOR=fillfactor][,IGNORE_DUP_KEY][,DROP_EXISTING][,STATISTICS_NORECOMPUTE]][ONfilegroup]
USEcompanyGOCREATETABLEemployee_temp(员工IDintNOTNULL,姓char(10),名char(10),工资int)
CREATEUNIQUECLUSTEREDINDEXIX_EidONemployee_temp(员工ID)CREATEUNIQUEINDEXIX_ElnamefnameWITHPAD_INDEX,FILLFACTOR=80,IGNORE_DUP_KEYONemployee_temp(姓,名)EXECsp_helpindexemployee_temp
11.4.2
USEcompanyGODROPINDEXemployee_temp.IX_Eid,employee_temp.IX_Elnamefname
12.3.1
CREATETRIGGERtrigger_nameONtable|view[WITHENCRYPTION]{FOR|AFTER|INSTEADOF}{[INSERT][,][UPDATE][,][DELETE]}ASsql_statement[...n]
USEcompanyGO--创建触发器CREATETRIGGER触发器_欢迎新员工ONemployeeAFTERINSERTASPRINT'新员工加入本公司,欢迎欢迎!'GO--创建新触发器CREATETRIGGER触发器_员工走了ONemployeeAFTERDELETEASPRINT'真遗憾看你离开公司!'GOSETNOCOUNTON--插入一条记录试试触发器操作INSERTINTOemployee(员工ID,,性别,工资)VALUES(20068,‘陶方’,‘男’,1000)--删除一条记录试试DELETEFROMemployeeWHERE员工ID=‘20067’GO/*关闭影响行数信息*//*指定表*//*指定触发操作*//*指定表*//*指定触发操作*/
12.3.2
EXECsp_helptrigger‘table’[,‘type’]EXECsp_helptrigger‘employee’EXECsp_helptext‘trigger_name’EXECsp_helptext‘触发器_欢迎新员工’EXECsp_help‘trigger_name’EXECsp_help‘触发器_员工走了’
12.3.3
ALTERTRIGGERtrigger_nameONtable|view[WITHENCRYPTION]{FOR|AFTER|INSTEADOF}{[INSERT][,][UPDATE][,][DELETE]}ASsql_statement[...n]
EXECsp_rename‘触发器_欢迎新员工’,‘Welcom_Trigger’
12.3.4
DROPTRIGGERtrigger_name[,...n]DROPTRIGGER触发器_员工走了,Welcome_Trigger
12.4.1
--创建触发器CREATETRIGGERtrigger_salaryONpmanagerAFTERINSERTASIF(SELECT工资FROMinserted)>5000BEGINPRINT‘新员工工资不能超过5000’/*报错*//*使用inserted表判断新插入的数据*/
ROLLBACKENDGOSETNOCOUNTON--插入一条记录INSERTINTOpmanager(负责人ID,,性别,工资)values(‘XXF001’,‘谢小芳’,‘女’,6000)
/*回滚插入操作*/
INSERTINTOpmanager(负责人ID,,性别,工资)SELECTID,NAME,SEX,SALARYFROMpmanager_tempGO
12.4.2
CREATETRIGGERtrigger_salary_changeONpmanagerAFTERUPDATEASIFUPDATE(工资)BEGINIF(SELECTMAX(ABS(inserted.工资-deleted.工资))FROMinsertedJOINdeletedONinserted.负责人ID=deleted.负责人ID)>2000BEGINPRINT'工资变动不能超过2000'ROLLBACKTRANSACTIONENDENDELSEPRINT‘工资没有变!’
UPDATEpmanagerSET工资=8000WHERE负责人ID=‘LIS035’
UPDATEpmanagerSET=‘丽莎’WHERE负责人ID=‘LIS035’
12.4.3
CREATETRIGGERtrigger_delete_customerONcustomerAFTERDELETEASIF(SELECTMAX(项目标的)FROMprojectASpJOINdeletedASdONp.合作客户ID=d.客户ID)>=50000BEGINPRINT'不能删除大客户!'ROLLBACKTRANSACTIONEND
12.4.4
USEcompanyGOCREATETRIGGERTrigger_IOInsertONpmanagerINSTEADOFINSERTASSETNOCOUNTONUPDATEpmanagerSETpmanager.=inserted.,pmanager.性别=inserted.性别,pmanager.工资=inserted.工资FROMpmanagerJOINinsertedONpmanager.负责人ID=inserted.负责人ID
PRINT'在原来记录的基础上更改了'+CAST(@@ROWCOUNTASVARCHAR)+'条记录'
INSERTpmanagerSELECT*FROMinsertedWHEREinserted.负责人IDNOTIN(SELECT负责人IDFROMpmanager)PRINT'插入了'+CAST(@@ROWCOUNTASVARCHAR)+'条新记录'GO
INSERTpmanagerSELECT*FROMpmanager_temp
CREATEVIEWLfname_View(,工资)ASSELECT姓+‘’+名AS,工资FROMemployee_temp
CREATETRIGGERInsertByView_TriggerONLfname_ViewINSTEADOFINSERTASINSERTemployee_temp(姓,名,工资)SELECTLEFT(,CHARINDEX(‘’,)-1),RIGHT(,LEN()-CHARINDEX(‘’,)),工资FROMinsertedGOINSERTLfname_view(,工资)values(‘马大哈’,5000)
13.3.1
CREATEPROC[EDURE]procedure_name[;number][{@parameterdata_type}[VARYING][=default][OUTPUT]
][,...n][WITH{RECOMPILE|ENCRYPTION|RECOMPILE,ENCRYPTION}][FORREPLICATION]ASsql_statement[...n]
USEcompany--如果存在同名的存储过程,先删除之IFEXISTS(SELECTNAMEFROMsysobjectsWHEREname='Pinfo50000'ANDtype='P')DROPPROCEDUREPinfo50000GO--新建存储过程CREATEPROCEDUREPinfo50000ASSELECT*FROMprojectWHERE项目标的>=50000ORDERBY项目标的DESCGO--执行存储过程EXECPinfo50000GO
13.3.2
[EXEC[UTE]]{[@return_status=]procedure_name[;number]}[[@parameter=]{value|@variable[OUTPUT]|[DEFAULT]}][,...n][WITHRECOMPILE]USEcompany--如果在数据库中已经存在存储过程GetAvgPbiaodi,先将其删除。IFEXISTS(SELECTnameFROMsysobjectsWHEREname='GetAvgPbiaodi'ANDtype='P')DROPPROCEDUREGetAvgPbiaodiGO
--创建存储过程GetAvgPbiaodi--输入参数@name用于传递项目负责人的--输出参数@avgpbiaodi用于接受项目的平均标的
CREATEPROCEDUREGetAvgPbiaodi@namevarchar(10),@avgpbiaodiintOUTPUTAS--声明和初始化一个变量,用于保存返回值DECLARE@ErrorSaveINTSET@ErrorSave=0SELECT@avgpbiaodi=AVG(项目标的)FROMprojectaspINNERJOINpmanageraspmONp.负责人ID=pm.负责人IDWHEREpm.=@nameIF(@@ERROR<>0)SET@ErrorSave=@@ERRORRETURN@ErrorSaveGO
--声明变量,用于保存返回值和输出参数DECLARE@returnvalueINT,@avgINTEXEC@returnvalue=GetAvgPbiaodi'马中新',@avgOUTPUT
PRINT'执行的结果:'--CAST函数用转换数据类型PRINT'返回值='+CAST(@returnvalueasCHAR(2))PRINT'李中新负责项目的平均标的为:'+CAST(@avgasCHAR(10))GO
CREATETABLEImportantProject(项目编号INT,项目名称CHAR(20),项目标的INT,合作客户IDCHAR(10),负责人IDCHAR(10)
)INSERTINTOImportantProjectEXECPinfo50000GOSELECT*FROMImportantProject
13.3.3
EXECsp_helptextGetAvgPbiaodiEXECsp_dependsGetAvgPbiaodiEXECsp_helpGetAvgPbiaodi
13.4.4
EXECsp_rename存储过程原名存储过程新名execsp_renameGetAvgPbiaodi,'项目平均标的过程'使用ALTERPROCEDURETransact-SQL语句修改存储过程。语法如下:ALTERPROCEDUREprocedure_name[;number][{@parameterdata_type}[VARYING][=default][OUTPUT]][,...n][WITH{RECOMPILE|ENCRYPTION|RECOMPILE,ENCRYPTION}][FORREPLICATION]ASsql_statement[...n]
ALTERPROCEDUREPinfo50000ASSELECT项目名称,项目标的FROMprojectWHERE项目标的>=50000ORDERBY项目标的DESCGO--执行存储过程EXECPinfo50000GO
13.3.5
DROPPROCEDURE{procedure}[,...n]DROPPROCEDUREPinfo50000
14.2.1
EXECsp_addsrvrolemember‘Adam’,‘serveradmin’EXECsp_srvrolepermissionserveradminEXECsp_dropsrvrolemember‘Adam’,‘serveradmin’14.2.2EXECsp_helpdbfixedroleUSEcompanyEXECsp_addrolemember‘db_ddladmin’,‘HEADQUATERS\Adam’EXECsp_droprolemember‘db_ddladmin’,‘HEADQUATERS\Adam’
14.2.3
sp_addrole'role'[,'owner']USEcompanyGOEXECsp_addrole‘customers’
14.3.1
CREATEDATABASECREATETABLECREATEVIEWCREATERULECREATEPROCEDURECREATEFUNCTIONCREATEDEFAULTBACKUPDATABASEBACKUPLOG
13.3.2
GRANTSELECTONemployeeTOAdam,salesmanager,[HEADQUARTERS\mims]GRANTSELECTONemployeeTOsalesmanagerWITHGRANTOPTION
DENYDELETETOAdam
USEcompanyEXECsp_helprotect'employee'
14.3.3
GRANTCREATETABLETOAdam,salesmanager,[HEADQUARTERS\mims]DENYCREATEVIEWTOAdamREVOKEALLFROMAdam
15.1.1
BACKUPDATABASEaccountingTOAccounting_Backup
BACKUPDATABASEaccountingTODISK='C:\Backups\Accounting\Full.Bak'sp_addumpdevice‘设备类型’,‘设备逻辑名’,‘设备的物理名称’
EXECsp_addumpdevice‘disk’,‘company_back’,‘d:\Data_backup\company_back.bak’
sp_dropdevice‘设备的逻辑名称’,‘delfile’
EXECsp_dropdevice‘company_back’
EXECsp_dropdevice‘company_back’,‘DELFILE’
15.2.3
BACKUPDATABASEcompanyTODISK=‘D\SQLBackup\company.bak’BACKUPDATABASEcompanyTOcompany_backupWITHDIFFERENTIAL
BACKUPLOGcompanyTOcompany_log_backup
BACKUPLOGcompanyTOcompany_log_backupWITHNO_TRUNCATE
BACKUPDATABASEcompanyFILEGROUP=‘PRIMARY’TOcompany_filegroupbackup_primary
15.3.2
RESTOREDATABASE数据库名[FROM备份设备名[,...n]][WITH[[,]{NONRECOVERY|RECOVERY}][[,]REPLACE]]RESTORELOG数据库名[FROM备份设备名[,...n]][WITH[[,]{NONRECOVERY|RECOVERY}][[,]STOPAT=date_time]]RESTOREDATABASE数据库名{FILE=逻辑文件名|FILEGROUP=逻辑文件组名}[FROM备份设备名[,...n]][WITH[[,]{NONRECOVERY|RECOVERY}][[,]REPLACE]]
RESTOREDATABASEcompanyFROMDISK=‘D:\SQLBackup\company.bak’
RESTOREDATABASEcompanyFROMcompany_backupWITHNONRECOVERY
RESTORELOGcompanyFROMcompany_logbackup1WITHNONRECOVERY
RESTORELOGcompanyFROMcompany_logbackupWITHRECOVERY,STOPAT=‘Oct5,19996:00:05PM’
RESTOREDATABASEcompanyFILE=‘company_data_1’,FILE=‘company_data_2’,FILEGROUP=‘Employees_FG’FROMcompany_backupWITHNORECOVERYRESTORELOGMyNwindFROMcompany_logbackup1
17.2.2
<%‘在此插入VBScript%>
DimiasIntegerDimmyTextasString
DimiDimmyText
DimMyConn
SetMyConn=Server.Createobject(“ADODB.Connection”)
MyConn.ConnectionString=“driver={SQLServer};”&;“Server=Sample;_uid=Adam”&;”;pwd=APassword;database=company”
MyConn.open
17.2.3
CREATETRIGGERTrigger_InsertPositionConONPositionConAFTERINSERTASBEGIN/*声明一个变量以存储同一类别中的职位总数*/DECLARE@CountItemsASINTEGER/*将特定类别的职位总数放置到变量中以备后用*/SELECT@CountItems=COUNT(所属类别ID)FROMPositionConWHEREPositionCon.所属类别ID=(SELECT所属类别IDFROMinserted)/*更新positionCat中的字段*/UPDATEPositionCatSET包含职位总数=@CountItemsWHERE类别ID=(SELECT所属类别IDFROMinserted)END
CREATETRIGGERTrigger_DeletePositionConONPositionConAFTERDELETEASBEGINDECLARE@CountItemsASINTEGERSELECT@CountItems=COUNT(所属类别ID)FROMPositionCon
WHEREPositionCon.所属类别ID=(SELECT所属类别IDFROMdeleted)
UPDATEPositionCatSET包含职位总数=@CountItemsWHERE类别ID=(SELECT所属类别IDFROMdeleted)END
CREATEPROCEDUREProcedure_PositionCatListASDECLARE@ResultTextVARCHAR(5000),@PositionCatIDINTEGER,--存放格式化以后的结果HTML文本--存放类别ID--存放类别名
@PositionCatNameVARCHAR(50),@PositionCatItemsINTEGER--声明游标DECLARECurPositionCatCURSOR
--存放类别中的职位总数
FORSELECT*FROMPositionCatORDERBY类别名--打开游标OPENCurPositionCat--返回第一条记录并将各个字段存入变量FETCHCurPositionCatINTO@PositionCatID,@PositionCatName,@PositionCatItemsSELECT@ResultText=''WHILE@@FETCH_STATUS=0
BEGINSELECT@ResultText=@ResultText+''+@PositionCatName+'('+@PositionCatItems+')
'--返回下以条记录FETCHCurPositionCatINTO@PositionCatID,@PositionCatName,
@PositionCatItemsEND--关闭游标CLOSECurPositionDEALLOCATECurPosition--返回HTML文本SELECT@ResultTextASResultTextGO(2)存储过程Procedure_PositionConListCREATEPROCEDUREProcedure_PositionConList@PositionCatIDINTEGERASDECLARE@ResultTextVARCHAR(5000),@PositionCatNameVARCHAR(50),@PositionIDINT,@PositionNameVARCHAR(50),@PositionDescriptionVARCHAR(5000),@CompanyVARCHAR(50),@TelephoneVARCHAR(20)WHERE类别ID=@PositionCatID--声明游标DECLARECurPositionConCURSORFORSELECT职位名称,职位描述,公司,联系电话FROMPositionConWHERE所属类别ID=@PositionCatIDORDERBY职位名称OPENCurPositionCon---取出第一条记录FETCHCurPositionConINTO@PositionName,@PositionDescription,@Company,@Telephone--为变量赋初值SELECT@ResultText=''WHILE@@FETCH_STATUS=0BEGIN--输出HTML文本SELECT@ResultText=@ResultText--打开游标--存储最终的HTML文本--存储职务类别名--存储职务ID--存储职位名称--存储职务描述--存储公司名称--存储联系电话--包含输入参数,传递类别ID
SELECT@PositionCatName=类别名FROMPositionCat
+'
'+@PositionName+''+'
'+@PositionDescription+'
'+@Company+'
'+@Telephone+'
'FETCHCurPositionConINTO@PositionName,@PositionDescription,@Company,@TelephoneEND--关闭游标CLOSECurPositionConDEALLOCATECurPositionConSELECT@ResultTextASResultText,@PositionCatNameASPositionCatNameGO(1)ASP文件index.asp<%OptionExplicitDimMyConnDimPositionCatsetMyConn=Server.Createobject("ADODB.Connection")MyConn.ConnectionString="driver={SQLServer};"_&;"server=SAMPLE;uid=sa"_&;";pwd=;database=DB_Asp"MyConn.OpenSetPositionCat=MyConn.Execute("ExecProcedure_PositionCatList")%>
张氏文案公司招聘代理
请选择工作领域:
<%Response.WritePositionCat("ResultText")%>(2)ASP文件PositionCon.asp
<%OptionExplicitDimMyConnDimPositionConIfIsEmpty(Request.QueryString("CategoryID"))ThenResponse.Redirect"index.asp"EndIfsetMyConn=Server.Createobject("ADODB.Connection")MyConn.ConnectionString="driver={SQLServer};"_&;"server=Sample;uid=sa"_&;";pwd=;database=db_asp"MyConn.OpenSetPositionCon=MyConn.Execute("ExecProcedure_PositionConList"_&;Request.QueryString("CategoryID"))%>
张氏文案公司招聘代理
<%Response.WritePositionCon("PositionCatName")%>
<%Response.WritePositionCon("ResultText")%>