Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/sql/80.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Sql 单个输入参数存储过程的输入值列表_Sql_Sql Server - Fatal编程技术网

Sql 单个输入参数存储过程的输入值列表

Sql 单个输入参数存储过程的输入值列表,sql,sql-server,Sql,Sql Server,我编写了一个存储过程,它接受一个输入参数,并通过运行存储过程来提供多个输出参数值。但是我试图发送一个输入值列表,通过逻辑,并在那里显示相应的输出,而不是一对一的输入 我在代码部分为这个问题创建了一个临时表,但实际上数据库中有一个可用的表,我想从该表中获取输入(指定列)(如下所示,从#Temp1中选择Candidate_Name)并输入我的存储过程,因此,它将检索该巨大列表中每个输入参数的其他详细信息 /************ Table Creation ****************/ C

我编写了一个存储过程,它接受一个输入参数,并通过运行存储过程来提供多个输出参数值。但是我试图发送一个输入值列表,通过逻辑,并在那里显示相应的输出,而不是一对一的输入

我在代码部分为这个问题创建了一个临时表,但实际上数据库中有一个可用的表,我想从该表中获取输入(指定列)(如下所示,从
#Temp1
中选择
Candidate_Name
)并输入我的存储过程,因此,它将检索该巨大列表中每个输入参数的其他详细信息

/************ Table Creation ****************/
CREATE TABLE #TEMP1 
(
    Candidate_Name VARCHAR(20),
    Age INT,
    Designation VARCHAR(20) 
)

INSERT INTO #TEMP1 VALUES 
('Smith',   18 , 'Staff Accountant'),
('Williams',32 , 'Sr. Software Engineer'),
('Weinberg',40,  'Human Resource Manger'),
('Franklin',35,  'Operations Manager'),
('Armstrong',22, 'Database Administrator'),
('Cromley', 30,  'Recruting Manager'),
('Richardson',33,'Safety Clerk'),
('Horton', 45,   'Accounting Manager'),
('Washington',22,'HelpDesk Technician')
GO

/************ End of Table Creation ****************/

/************ Stored Procedure **************/
CREATE PROC [Employee_Details] 
    (@Name Varchar(20)) 
AS
    DECLARE @AGE INT,
            @Designation VARCHAR(20)

    SELECT AGE, Designation 
    FROM #TEMP1
    WHERE Candidate_Name = @Name

/************ End of Stored Procedure **************/

/************ Execution of Stored Procedure **************/
CREATE TABLE #TEMP2 (Employee_Name VARCHAR(20))

INSERT INTO #TEMP2
    SELECT Candidate_Name 
    FROM #TEMP1 

EXEC [Employee_Details] Employee_Name 

DROP TABLE #TEMP1
DROP TABLE #TEMP2
通过这种方式,我的存储过程将
Employee_Name
作为输入参数/参数,并返回
NULL
,而我希望解析
Temp1
表中的
候选名称的完整列表,并一次性检索它们的信息

我认为我输入存储过程的方式是错误的,如果有人提出一些想法,那将非常好。

尝试以下方法:

CREATE FUNCTION <schema>.fn_Get_Employee_Details
             (@Name VARCHAR(60) = NULL) 
RETURNS TABLE
AS
RETURN
(SELECT t.Candidate_Name AS Employee_Name,
        t.Age,
        t.Designation
 FROM   abrechnung.test4 AS t
 WHERE  @Name IS NULL
        OR t.Candidate_Name = @Name)
GO

如果这不是您期望的输出,请确切地告诉我您想要什么。

使用“为什么存储过程和第二个表?”?为什么不是表值的用户定义函数?
SELECT * FROM <schema>.fn_Get_Employee_Details('Weinberg') -- DEFAULT = NULL -> all entries
Employee_Name   Age     Designation
Weinberg        40      Human Resource Manger