ALTER PROCEDURE [dbo].[select_stu_Valid]
(
@UserId varchar(50),
@ISValid varChar(12) OUTPUT)
AS
IF EXISTS(SELECT s_userguid FROM mytable WHERE s_userguid = @UserId)
SELECT @ISValid = 'yes'
ELSE
SELECT @ISValid = 'no'
这个存储过程是意思是判断s_userguid 是否为空。为空的话输出no,不为空的话输出yes。
但是我想在这个存储过程中如果s_userguid 非空的话再将一个字段s_ID 取出,这样的话应该怎么改写呢?

解决方案 »

  1.   

    ALTER PROCEDURE [dbo].[select_stu_Valid]
    (
    @UserId varchar(50),
    @ISValid varChar(12) OUTPUT)
    ASDECLARE @ISValid varchar(200), @s_ID int
    IF EXISTS(SELECT s_userguid FROM mytable WHERE s_userguid = @UserId)
    SET @ISValid = 'yes'
             SET @s_ID = (SELECT ....)
    ELSE
    SET @ISValid = 'no'
             SET @s_ID = (SELECT ....)
    SELECT @ISValid, @s_ID 使用 SqlDataReader 读取
      

  2.   

    请问realtb(强悍的猪) ,我目前改成这个样子:
    ALTER PROCEDURE [dbo].[select_stu_Valid]
    (
    @UserId varchar(50)
    )
    ASDECLARE @ISValid varchar(200), @s_ID int
    IF EXISTS(SELECT s_userguid FROM student WHERE s_userguid = @UserId)
    SET @ISValid = 'yes'
             SET @s_ID = (SELECT s_ID FROM student WHERE s_userguid = @UserId)
    ELSE
    SET @ISValid = 'no'
    SELECT @ISValid, @s_ID 
    提示关键字 'ELSE' 附近有语法错误。
    这是哪里的问题呢?
      

  3.   

    你接着添加Output类型的参数就是了.
      

  4.   

    ALTER PROCEDURE [dbo].[select_stu_Valid]
    (
    @UserId varchar(50),
    @ISValid varChar(12) OUTPUT,
    @myid int OUTPUT
    )
    AS
    IF EXISTS(SELECT s_userguid FROM Student WHERE s_userguid = @UserId)
    SELECT @ISValid = 'yes',@myid = (SELECT s_ID FROM Student WHERE s_userguid = @UserId)
    ELSE
    SELECT @ISValid = 'no'
    改成这个样子,现在没问题了~
    谢谢楼上几位~~