2016-11-10 3 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

Tag СУБД вы используете, это продукт, конкретный вопрос. – 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 
Смежные вопросы