创建程序

时间:2016-12-08 20:19:17

标签: sql sql-server procedure

请p,我试图创建一个程序,每当我输入参数时将显示4个参数。这是我的代码

CREATE PROCEDURE sp_emp_info
(       @EmployeeID         INT,
        @EmployeeID         INT             OUTPUT,
        @LastName           VARCHAR(30)     OUTPUT,
        @FirstName          VARCHAR(15)     OUTPUT,
        @Phone              VARCHAR(10)     OUTPUT      )
AS
SELECT @EmployeeID,
      @LastName,
     @FirstName,
     @Phone
FROM    Employees
WHERE   EmployeeID = @EmployeeID    
GO

这会带来此错误

  

变量名称' @ EmployeeID'已经宣布。变量名在查询批处理或存储过程中必须是唯一的。

     

必须声明标量变量" @ LastName"

我有EmployeeID作为输入和输出。当我尝试通过运行以下命令删除输出时:

CREATE PROCEDURE sp_emp_info
(       @EmployeeID         int,
        @LastName           VARCHAR(30)     OUTPUT,
        @FirstName          VARCHAR(15)     OUTPUT,
        @Phone              VARCHAR(10)     OUTPUT      )
AS
SELECT @EmployeeID,
    @LastName,
    @FirstName,
    @Phone
FROM    Employees
WHERE   EmployeeID = @EmployeeID    
GO

有效,但程序不会运行。比如我跑了

EXECUTE sp_emp_info 7

它出现了这个错误:

  

程序或功能' sp_emp_info'期望参数' @ LastName',这是未提供的。

你觉得我做错了什么?谢谢。

2 个答案:

答案 0 :(得分:0)

您需要为可选参数设置默认值。在这种情况下,我将它们设置为NULL

CREATE PROCEDURE sp_emp_info
    (       @EmployeeID         int      )
    AS
    SELECT EmployeeID
        LastName,
        FirstName,
        Phone
    FROM    Employees
    WHERE   EmployeeID = @EmployeeID    
    GO

答案 1 :(得分:0)

好的,我正在以复杂的方式解决这个问题。这个简单的编码:

CREATE PROCEDURE sp_emp_info (@EmployeeID int)
如 SELECT EmployeeID,         姓,         名字,         电话 来自员工 WHERE EmployeeID = @EmployeeID GO

解决了我的问题。 谢谢大家。非常感谢