【问题标题】:Returning a custom value from stored procedure从存储过程返回自定义值
【发布时间】:2011-05-09 05:41:36
【问题描述】:

我有这个存储程序;

USE [DataBase]
GO
/****** Object:  StoredProcedure [dbo].[DeleteAll]    Script Date: 05/09/2011 00:18:00 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO

ALTER PROCEDURE [dbo].[DeleteAll]
    @theID uniqueidentifier
AS
BEGIN
    -- SET NOCOUNT ON added to prevent extra result sets from
    -- interfering with SELECT statements.
    SET NOCOUNT ON
    BEGIN TRANSACTION

    BEGIN TRY

        DELETE FROM Table1
        WHERE ID = @theID    

        DELETE FROM Table2
        WHERE ID = @theID    

        DELETE FROM Table3
        WHERE ID = @theID

    END TRY

    BEGIN CATCH
        IF @@TRANCOUNT > 0 
            BEGIN 
                ROLLBACK TRANSACTION
            END
    END CATCH;

    IF @@TRANCOUNT > 0 
        BEGIN
            COMMIT TRANSACTION
        END
END

是否可以根据结果返回一个整数??

例如:1 表示成功,2 表示捕获。

提前致谢!

埃德加。

【问题讨论】:

    标签: sql-server stored-procedures


    【解决方案1】:

    是的,有可能。

    使用RETURN语句并检查返回值in your client code

    CREATE PROCEDURE checkstate @param varchar(11)
    AS
    IF (SELECT StateProvince FROM Person.vAdditionalContactInfo WHERE BusinessEntityID = @param) = 'WA'
        RETURN 1
    ELSE
        RETURN 2;
    GO
    

    【讨论】:

    • 0 和 1 不是更合适的返回值吗?如,零等于假,> 0 等于真
    • @Mitch - 同意。代码示例是从 MSDN 中逐字获取的......随时更改它。
    • 该死的MSDN!!!希望他们不要再把更新 MSDN 变成暑期实习生的任务了! (我猜!)
    • @Mitch - 不知道是这样。虽然它确实解释了很多。
    • 谢谢!那项工作。 2 而不是 0 的原因是因为我以不同的方式管理错误。对我来说,0 是“预期错误”,我使用 2 表示意外错误。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多