Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/sql/84.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_Stored Procedures - Fatal编程技术网

Sql 具有输入和输出参数的存储过程

Sql 具有输入和输出参数的存储过程,sql,sql-server,stored-procedures,Sql,Sql Server,Stored Procedures,我有一个包含3列的表:用户名、密码和权限。我正在尝试编写一个存储过程,以接受@username作为输入参数,然后输出参数@permission。如何做到这一点?可能需要更多,但根据您的问题,以下是代码: CREATE PROCEDURE [dbo].[GetPermission] @userName varchar(50), @permission int output AS BEGIN select @permission = PERMISSION from USER

我有一个包含3列的表:
用户名
密码
权限
。我正在尝试编写一个存储过程,以接受
@username
作为输入参数,然后输出参数
@permission
。如何做到这一点?

可能需要更多,但根据您的问题,以下是代码:

CREATE PROCEDURE [dbo].[GetPermission]
    @userName varchar(50),
    @permission int output
AS
BEGIN

    select @permission = PERMISSION from USERS where UserName = @userName

END;
编辑:

另一个选项是创建函数,例如:

CREATE FUNCTION [dbo].[GetPermission](@userName [varchar(50)])
RETURNS [int] 
AS 
BEGIN

    declare @permission int

    select @permission = PERMISSION from USERS where UserName = @userName

    return @permission

END;

要添加到Gustavo F point,输出参数的ParameterDirection应设置为ParameterDirection.output


创建带有returnvalue的存储函数是否更好?返回结果集会有很大的不同吗?顺便说一句,如果你(pikk)想要比较密码,我建议你将它们散列存储。。。嗯,我正试图在Visual Studio 2010中使用C#运行,调试器显示“过程或函数'sp_getPermission'需要参数'@permission',但未提供该参数。”。但这是输出,我必须提供什么?@pikk:您必须声明参数,但是,在SP执行后,值会改变。
CREATE PROC SP_ORDERS AS BEGIN SELECT DISTINCT E.EmployeeID,E.FirstName+SPACE(3)+E.LastName AS CUTNAME,E.City,ET.TerritoryDescription,P.ProductName, OD.Discount,SUM(OD.Quantity*OD.UnitPrice)AS TOTAL FROM [DimOrder Details] OD  JOIN DimOrders O ON OD.OrderID=O.OrderID JOIN DimProducts P ON OD.ProductID=P.ProductID JOIN DimEmployees E ON O.EmployeeID=E.EmployeeID JOIN DimCustomers C ON O.CustomerID=C.CustomerID JOIN DimEmployeeTerritories ET ON E.EmployeeID=ET.EmployeeID GROUP BY E.EmployeeID,E.FirstName,E.LastName,E.City,ET.TerritoryDescription,P.ProductName,OD.Discount END