WEB开发网
开发学院数据库MSSQL Server SQL Server存储过程入门案例详解 阅读

SQL Server存储过程入门案例详解

 2008-08-09 09:55:00 来源:WEB开发网   
核心提示: DECLARE@ContactIDINTSET@ContactID=0EXECuspGetContact@LastName='Smith',@ContactID=@ContactIDOUTPUTIF@ContactID<>0BEGINSELECTContactI

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

 查询结果如下:

SQL Server存储过程入门案例详解

例 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'

上一页  1 2 3 4 5  下一页

Tags:SQL Server 存储

编辑录入:爽爽 [复制链接] [打 印]
赞助商链接