IF/ELSE存储过程

Mun*_*ish 14 sql t-sql sql-server stored-procedures sql-server-2005

任何人都可以请指出我在这个存储过程中做错了.我不能让它编译,我的软件没有提供任何有用的线索,它有什么问题.

CREATE PROCEDURE web.createSubscriptions
   (
   @Member_Id BIGINT,
   @Trans_type VARCHAR(100),
   @Payment_Status VARCHAR(100),
   @Payment_Date DATETIME,
   @Trans_Id VARCHAR(100)
   )

AS
DECLARE @tmpType VARCHAR(15)
BEGIN

INSERT INTO TBL_SUBSCRIPTIONS (subs_MemberID, subs_Type, subs_Status, subs_DateGenerated, subs_PaypalTransaction) VALUES(@Member_Id, @Trans_Type, @Payment_Status, @Payment_Date, @Trans_Id)

IF(@Trans_type = 'subscr_signup')
    BEGIN
    @tmpType = 'premium'
    END
ELSE(@Trans_type = 'subscr_cancel')
    BEGIN
    @tmpType = 'basic'
    END

UPDATE TBL_MEMBERS
SET members_Type = @tmpType
WHERE members_Id = @Member_Id

END
Run Code Online (Sandbox Code Playgroud)

Ric*_*dOD 16

尼克是对的.下一个错误是else应该是else if(你当前在你的else中有一个布尔表达式没有意义).这应该是什么

ELSE IF(@Trans_type = 'subscr_cancel')
    BEGIN
    SET @tmpType = 'basic'
    END
Run Code Online (Sandbox Code Playgroud)

您目前有以下(这是错误的):

ELSE(@Trans_type = 'subscr_cancel')
    BEGIN
    SET @tmpType = 'basic'
    END
Run Code Online (Sandbox Code Playgroud)

这是未来的提示 - 双击错误,SQL Server管理Studio将转到错误所在的行.如果您认为SQL Server会出现神秘错误(我认为它没有),那么您还没有使用过Oracle!


Nic*_*ick 8

它没有给出任何错误?试试
SET @tmpType = 'premium'

SET @tmpType = 'basic'