2016-11-10 11 views
1

お客様にはtable-firstname,lastname,gender,salaryがあります。私は5つの入力パラメータ:@FN, @LN, @GNDR, @SLRY and @TYPEでストアドプロシージャを作成しています。入力条件付きSQL

if @type=0 and @FN='SAM' - 'SAM'がすでにテーブルに存在する場合は、テーブルに新しいレコードを挿入する必要があります。 if @type=1 and @FN='SAM' - 'SAM'がすでにテーブルに存在する場合は、テーブルからレコードを削除する必要があります。 if @type=2 and @FN='SAM' - 'SAM'がすでにテーブルに存在する場合は、テーブルのレコードを更新する必要があります。

上記の条件のクエリを作成する際にご協力ください。ストアドプロシージャ下記の要件ごとに

+0

タグに使用しているDBMSを詳しく説明、これは製品固有の問題です。 – jarlh

+1

あなたの宿題にどのくらいの距離がありましたか?私たちはあなたのためにギャップを埋めようとします。 – Jens

+0

こんにちはジェンス私はT-SQLの初心者です。異なるシナリオで試してみます。 – Fahad

答えて

0

は、ソリューションによって確認してくださいあなた

CREATE PROCEDURE ProcedureName (
@FN VARCHAR(30), @LN VARCHAR(30), @GNDR VARCHAR(30), @SLRY DECIMAL(18,3) , @TYPE INT) 
As 
BEGIN 
     IF @type=0 AND @FN='SAM' 
     BEGIN 
      --INSERT Command here 
     END 
     IF @type=1 AND @FN='SAM' 
     BEGIN 
      --DELETE Command here     
     END 
     IF @type=2 AND @FN='SAM' 
     BEGIN 
      --UPDATE Command here 
     END 
END 
+0

代わりに 'ELSE IF'を使用していないのはなぜですか?彼らは十分排他的だ。 – Jens

+0

それも正しい –

+0

ありがとう、その作業。 – Fahad

0

のに役立ちます。 SQL Serverで別のケースを作成してください。

CREATE PROCEDURE Insertcustomer (
    @FN VARCHAR(30), 
    @LN VARCHAR(30), 
    @GNDR VARCHAR(30), 
    @SLRY DECIMAL(18,3) , 
    @TYPE INT) 
As 
BEGIN 
     IF @type=0 AND @FN='SAM' 
     BEGIN 
     Insert into customer(firstname,lastname,gender,salary)values(@FN, 
     @LN,@GNDR,@SLRY,@TYPE) 
     END 

     IF @type=1 AND @FN='SAM' 
     BEGIN 
      Delete from customer where firstname= @FN    
     END 


     IF @type=2 AND @FN='SAM' 
     BEGIN 
      update customer set 
      [email protected],[email protected],[email protected],[email protected] where 
      firstname= @FN 
     END 
END 

これはうまくいくでしょう。おかげさまで

0

これはJaydibJのPROC

CREATE PROCEDURE ProcedureName (@FN VARCHAR(30), @LN VARCHAR(30), @GNDR VARCHAR(30), @SLRY DECIMAL(18,3) , @TYPE INT) 
As 
BEGIN 
    IF @FN = 'SAM' AND (SELECT COUNT(*) FROM YourTable WHERE SomeColumn = 'SAM') > 0) --Only check this condition once 
     BEGIN 
      IF @TYPE=0 
       BEGIN 
        INSERT 'SOME VALUE' INTO YourTable WHERE <some condition> 
       END 
      IF @TYPE=1 
       BEGIN 
        DELETE FROM YourTable WHERE <some condition>     
       END 
      IF @TYPE=1 
      BEGIN 
        UPDATE YourTable 
        SET SomeColumn = 'SomeValue' WHERE <some condition> 
      END 
     END 
    ELSE 
    SELECT 'SAM was not supplied in the parameters or did not exist in table' -- or some logic 
END