2015-02-10 29 views
0

我已經tableADatabase1其中有一欄Genre(電影類型僅3)怎麼做或if語句,如果DATABSE場= X然後設置storedprocvariable = Y

在我的存儲過程我想以某種方式做的情況下,的情況下,或者如果它在database1.tableA檢查列Genre並執行以下操作邏輯的語句..

if genre is horror then 
    set @newvariable = 1 
if genre is comedy then 
    set @newvarable = 2 
if genre is animated then 
    set @newvarible = 3 

有什麼建議?

+0

哪些DBMS您使用的? Postgres的?甲骨文? – 2015-02-10 10:50:48

+0

我的建議是流程圖邏輯,然後將其轉換爲代碼。此外,採取嬰兒的步驟。一次只做一件事。 – 2015-02-10 10:52:30

+0

我正在使用微軟sql服務器管理 – user3668266 2015-02-10 10:53:09

回答

1

可以使用case statement得到你想要的東西,

SELECT 
     newvalue = CASE WHEN genre = 'horror' THEN 1 
         WHEN genre = 'comedy' THEN 2 
         WHEN genre = 'animated' THEN 3 
        END 
    FROM 
     tableA 

這將返回你所需要的價值。


UPDATE

AS OP所需要的存儲過程,

CREATE PROCEDURE [dbo].[spnamehere] 
@gameId INT 
AS 
BEGIN 
    SET NOCOUNT ON; 
    SET TRANSACTION ISOLATION LEVEL READ UNCOMMITTED; 

    SELECT 
     NewValue = CASE WHEN genre = 'horror' THEN 1 
         WHEN genre = 'comedy' THEN 2 
         WHEN genre = 'animated' THEN 3 
        END 
    FROM 
     tablename 
    WHERE 
     gameId = @gameId 
END 
+0

,這對我的作品感謝,但現在我想創建一個函數或存儲過程,通過一個gameId並做一個流派檢查gameId通過,然後caseme statmenet並返回新值這是可能的 – user3668266 2015-02-10 11:25:12

+0

檢查更新。它是從表中檢查遊戲ID的存儲過程,然後得到你想要的東西 – 2015-02-10 11:30:11

+0

看起來不錯新的值發生了什麼 – user3668266 2015-02-10 12:15:06