2016-06-22 9 views
0

私はとUserCategoryName、既存のレコードを確認したいと思います。existing recordを作成しますが、正しく動作していません。UserCategoryCode,どうすればいいですか?イムストアドプロシージャが存在しない詳細

SP

ALTER PROCEDURE [dbo].[UserCategories_InsertUpdate] 
@UserCategoryId int, 
@UserCategoryCode varchar(50), 
@UserCategoryName varchar(250), 
@Remarks nvarchar(max), 
@StatusId int, 
-- @StatusChangeDate DATETIME, 
@CreateId int, 
@Mode varchar(50), 
@iOutput int output 

AS 
BEGIN 

    BEGIN TRY 
    BEGIN TRAN 


    IF @Mode = 'Add' 
    BEGIN 
    IF NOT EXISTS (SELECT UserCategoryCode,UserCategoryName FROM UserCategories WHERE UserCategoryCode = @UserCategoryCode AND UserCategoryName = @UserCategoryName) 
     BEGIN 

      INSERT INTO UserCategories(

       UserCategoryCode, 
       UserCategoryName, 
       StatusId, 
       StatusChangeDate, 
       CreateBy, 
       CreatedDate, 
       Remarks 

       ) 
       VALUES(
       @UserCategoryCode, 
       @UserCategoryName, 
       @StatusId,GETDATE(), 
       @CreateId,GETDATE(), 
       @Remarks 


       ) 



     SET @iOutput = 1 --save successful-- 
     END 

     ELSE 

     BEGIN 
      SET @iOutput=-3 --existing record-- 
     END 
    END 
    ELSE IF @Mode = 'Modify' 
    BEGIN 

         UPDATE UserCategories 

         SET UserCategoryCode = @UserCategoryCode, 
          UserCategoryName = @UserCategoryName, 
          StatusId = @StatusId, 
          Remarks = @Remarks, 
          EditBy = @CreateId, 
          EditDate = GETDATE() 


         WHERE UserCategoryId = @UserCategoryId 

         SET @iOutput = 2 --save successful-- 

    END 

    COMMIT 

    END TRY 

    BEGIN CATCH 
     print ERROR_MESSAGE() 
     SET @iOutput = -2 --sp error-- 
     ROLLBACK   
    END CATCH 

END 
+0

使用するdbmsにタグを付けます。 (そのコードはANSI SQLのようには見えません...) – jarlh

+0

先生、アドバイスありがとうございました。私はSQLの初心者です。私は学びたいと思います。アドバイス:)(標準、そこにはSQL言語のバージョンがありますが、ANSI規格に準拠するには、少なくともメジャーコマンドをサポートしています) ' – Codeone

+0

SQLはANSI/ISOで指定された言語です。ほとんどのdbms製品は、その標準に近いSQL実装を備えています。しかし、ストアドプロシージャに関しては、ほとんどの製品が独自のバージョンを持っています。あなたのコードはANSI SQLに準拠していません。あなたが使用しているdbmsにタグを付けると、より良い注意とより良い答えが得られます - より速く! – jarlh

答えて

1

UserCategoryNameのためのその仕事)、それをしようが、機能しませんああついにその作業は、私は、

IF NOT EXISTS (SELECT UserCategoryCode FROM UserCategories WHERE UserCategoryCode = @UserCategoryCode) IF NOT EXISTS (SELECT UserCategoryName FROM UserCategories WHERE UserCategoryName = @UserCategoryName)

を解決策を見つけました
BEGIN 

      INSERT INTO UserCategories(

       UserCategoryCode, 
       UserCategoryName, 
       StatusId, 
       StatusChangeDate, 
       CreateBy, 
       CreatedDate, 
       Remarks 

       ) 
       VALUES(
       @UserCategoryCode, 
       @UserCategoryName, 
       @StatusId,GETDATE(), 
       @CreateId,GETDATE(), 
       @Remarks 


       ) 



     SET @iOutput = 1 --save successful-- 
     END 

     ELSE 

     BEGIN 
      SET @iOutput=-3 --existing record-- 
     END 
     ELSE 

     BEGIN 
      SET @iOutput=-5 --existing record-- 
     END 

    END 
    ELSE IF @Mode = 'Modify' 
    BEGIN 

         UPDATE UserCategories 

         SET UserCategoryCode = @UserCategoryCode, 
          UserCategoryName = @UserCategoryName, 
          StatusId = @StatusId, 
          Remarks = @Remarks, 
          EditBy = @CreateId, 
          EditDate = GETDATE() 


         WHERE UserCategoryId = @UserCategoryId 

         SET @iOutput = 2 --save successful-- 

    END 

    COMMIT 

    END TRY 

    BEGIN CATCH 
     print ERROR_MESSAGE() 
     SET @iOutput = -2 --sp error-- 
     ROLLBACK   
    END CATCH 

END 

とコードビハインド

else if (output == -3) 
       { 
        lblMsg.Text = "Already Exists!"; 
        lblMsg.ForeColor = System.Drawing.Color.Orange; 
       } 

       else if (output == -5) 
       { 
        lblMsg.Text = "Already Exists!"; 
        lblMsg.ForeColor = System.Drawing.Color.Orange; 
       } 
関連する問題