Sql 具有输入和输出参数的存储过程
我有一个包含3列的表: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
用户名
、密码
和权限
。我正在尝试编写一个存储过程,以接受@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