SQL Server存储过程入门案例详解
2008-08-09 09:55:00 来源:WEB开发网DECLARE@ContactIDINT
SET@ContactID=0
EXECuspGetContact@LastName='Smith',@ContactID=@ContactIDOUTPUT
IF@ContactID<>0
BEGIN
SELECTContactID,FirstName,LastName
FROMPerson.Contact
WHEREContactID=@ContactID
SELECTd.AddressLine1,d.City,d.PostalCode
FROMHumanResources.Employeea
INNERJOINHumanResources.EmployeeAddressbONa.EmployeeID=b.EmployeeID
INNERJOINPerson.ContactcONa.ContactID=c.ContactID
INNERJOINPerson.AddressdONb.AddressID=d.AddressID
WHEREc.ContactID=@ContactID
END
查询结果如下:
例 4 – 使用RAISERROR 语句的存储过程
在这个例子中,将把例3中的2个步骤整合到一个存储过程中。存储过程的第一步是取得ContactID,第二步是查询人员的姓名和地址信息。然后添加RAISERROR语句,如果查询不到记录则返回错误信息。
RAISERROR语句可以用来控制应用程序处理无数据或其它错误的方式。将该存储过程执行2次,看看能找到数据和不能找到数据的情况下各返回什么。
ALTERPROCEDUREuspGetContact@LastNameNVARCHAR(50)
AS
DECLARE@ContactIDINT
SELECTTOP1@ContactID=c.ContactID
FROMHumanResources.Employeea
INNERJOINHumanResources.EmployeeAddressbONa.EmployeeID=b.EmployeeID
INNERJOINPerson.ContactcONa.ContactID=c.ContactID
INNERJOINPerson.AddressdONb.AddressID=d.AddressID
WHEREc.LastName=@LastName
IF@@ROWCOUNT>0
BEGIN
SELECTContactID,FirstName,LastName
FROMPerson.Contact
WHEREContactID=@ContactID
SELECTd.AddressLine1,d.City,d.PostalCode
FROMHumanResources.Employeea
INNERJOINHumanResources.EmployeeAddressbONa.EmployeeID=b.EmployeeID
INNERJOINPerson.ContactcONa.ContactID=c.ContactID
INNERJOINPerson.AddressdONb.AddressID=d.AddressID
WHEREc.ContactID=@ContactID
END
ELSE
BEGIN
RAISERROR('Norecordfound',10,1)
END
EXECuspGetContact@LastName='Walters'
- ››sql server自动生成批量执行SQL脚本的批处理
- ››sql server 2008亿万数据性能优化
- ››SQL Server 2008清空数据库日志方法
- ››sqlserver安装和简单的使用
- ››SQL Sever 2008 R2 数据库管理
- ››SQL SERVER无法安装成功,sqlstp.log文件提示[未发...
- ››Sql Server中通过父记录查找出所有关联的子记录
- ››SqlServer触发器、存储过程和函数
- ››SQL Server 中的事务(含义,属性,管理)
- ››Sqlite数据库插入和读取图片数据
- ››Sql server 2005拒绝了对对象 'xx表' (数...
- ››Sql server 2005拒绝了对对象 'xx表' (数...
更多精彩
赞助商链接