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

标签您正在使用的数据库管理系统,这是一个产品的特定问题。 – jarlh

+1

我们如何做到您的功课。我们会尽力为你填补空白。 – Jens

+0

您好Jens我是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