如何将存储过程的输出返回到SQL Server中的字符串变量中

时间:2018-04-12 15:42:27

标签: sql sql-server string

我想在SQL Server中执行存储过程并将输出分配给字符串。

CREATE PROCEDURE sp_Check_User_Password
    @name NVARCHAR(30),
    @email NVARCHAR(50)
AS
BEGIN
    SET NOCOUNT ON;
    DECLARE @pass NVARCHAR(50)

    IF EXISTS(SELECT dbo.Mitarbeiter.Name, dbo.Mitarbeiter.Email 
              FROM dbo.Mitarbeiter
              WHERE dbo.Mitarbeiter.Name = @name 
                AND dbo.Mitarbeiter.Email = @email
    BEGIN
        SET @pass = dbo.Mitarbeiter.Password
    END
    ELSE
    BEGIN
        SET @pass = null
    END

    RETURN @pass
END

我改变了我写的错误

2 个答案:

答案 0 :(得分:0)

我会捅它。这是你想要做的吗?

CREATE PROCEDURE sp_Check_User_Password
@name nvarchar(30),
@email nvarchar(50)
AS
BEGIN
    SET NOCOUNT ON;
DECLARE @pass nvarchar(50) = null

IF EXISTS(SELECT dbo.Mitarbeiter.Email FROM dbo.Mitarbeiter
            WHERE dbo.Mitarbeiter.Name = @name and dbo.Mitarbeiter.Email = @email)
BEGIN
    SELECT @pass = dbo.Mitarbeiter.Email FROM dbo.Mitarbeiter
    WHERE dbo.Mitarbeiter.Name = @name and dbo.Mitarbeiter.Email = @email
END
  PRINT @pass
END

答案 1 :(得分:0)

看看下面的示例,只需添加您的内容即可使用

    CREATE PROCEDURE return_string 
        (@param1 NVARCHAR(10),
        @param2 NVARCHAR(10), 
        @output NVARCHAR(10) OUT)
    AS
    BEGIN
        IF (1=1)
            SET @output = 'here'
        else
            SET @output = null
    END

测试

    declare @out nvarchar(10)
    exec return_string 'firdt param', 'second param', @out out
    select @out

我希望这能帮助你实现所需。

所以你的SP看起来像:

CREATE PROCEDURE sp_Check_User_Password
(
    @name nvarchar(30),
    @email nvarchar(50),
    @pass nvarchar(50) OUT
)
AS
BEGIN
    SET NOCOUNT ON;

    IF EXISTS(SELECT 1
                FROM dbo.Mitarbeiter
                WHERE dbo.Mitarbeiter.Name = @name 
                    and dbo.Mitarbeiter.Email = @email)
    BEGIN
        SET @pass = (SELECT dbo.Mitarbeiter.Name
                        FROM dbo.Mitarbeiter
                        WHERE dbo.Mitarbeiter.Name = @name 
                            and dbo.Mitarbeiter.Email = @email)
    END
    ELSE
    BEGIN
        SET @pass = null
    END
END