【问题标题】:Stored Procedure with both input and output parameters具有输入和输出参数的存储过程
【发布时间】:2012-01-17 00:03:18
【问题描述】:

我有一个包含 3 列的表:usernamepasswordpermission。我正在尝试编写一个存储过程来接受@username 作为输入参数,然后输出一个参数@permission。我该怎么做?

【问题讨论】:

    标签: sql sql-server stored-procedures


    【解决方案1】:

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

    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;
    

    【讨论】:

    • 创建一个带有返回值的存储函数会更好吗?改为返回结果集有很大不同吗?
    • 顺便说一句。如果您(pikk)想比较密码,我建议您将它们存储为散列...link
    • 嗯,我正在尝试使用 C# 在 Visual Studio 2010 中运行,调试器显示“过程或函数 'sp_getPermission' 需要参数 '@permission',但未提供。”。但它是输出,我必须提供什么?
    • @pikk: 无论如何都要声明参数,但是,在SP执行之后,值会改变。
    【解决方案2】:

    只是添加到Gustavo F点,输出参数的ParameterDirection应该设置为ParameterDirection.Output。

    http://msdn.microsoft.com/en-us/library/system.data.sqlclient.sqlparameter.direction%28v=vs.110%29.aspx

    【讨论】:

      【解决方案3】:
      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
      

      【讨论】:

        猜你喜欢
        • 2021-04-14
        • 1970-01-01
        • 1970-01-01
        • 2017-10-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2012-01-26
        相关资源
        最近更新 更多