Mah*_*aha 1 sql sql-server stored-procedures
我是SQL Server 2008的新手,有问题需要澄清.
我创建了小存储过程并使用错误处理方法来引发错误.
尝试阻止工作正常但捕获不是.
我创建了一个这样的存储过程:
USE [AdventureWorks2008R2]
GO
CREATE PROCEDURE [dbo].[uspGetpersonName]
@BusinessEntityID int
AS
BEGIN
BEGIN TRY
SELECT FirstName, LastName, MiddleName
FROM Person.Person
WHERE BusinessEntityID = @BusinessEntityID;
END TRY
BEGIN CATCH
RAISERROR('There is no record Exixts!!!',16,1)
END CATCH
END
Run Code Online (Sandbox Code Playgroud)
在另一个查询生成器中执行存储过程,如下所示:
EXEC dbo.uspGetpersonName 343545
Run Code Online (Sandbox Code Playgroud)
从select语句返回零行不是错误.这只是结果.
如果你在try块中运行另一个确实抛出错误的语句(通过故意将其除以零SELECT 3/0进行测试),那么你的catch块就会被激活.
你想要的更像是这样的:
SELECT FirstName, LastName, MiddleName
FROM Person.Person
WHERE BusinessEntityID = @BusinessEntityID;
IF @@rowcount = 0
BEGIN
RAISERROR('There is no record Exixts!!!',16,1)
END
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
139 次 |
| 最近记录: |