SQL存储过程无法返回值

Mic*_*len 2 sql vb.net asp.net stored-procedures

我正在为一个用ASP.NET设计的新闻页面的Tag系统工作.对于系统,我需要一个TagExists方法来检查数据库中的标签.我写的存储过程如下.

ALTER PROCEDURE [dbo].[Tags_TagExists](
    @Tag varchar(50))
AS
BEGIN
    If (EXISTS(SELECT * FROM dbo.Tags WHERE LOWER(@Tag) = LOWER(Tag)))
        RETURN 1
    ELSE
        RETURN 0
END
Run Code Online (Sandbox Code Playgroud)

当我调用此方法时,总是返回0.我使用以下代码来调用该方法

Public Shared Function TagExists(ByVal name As String) As Boolean
    Dim result As Boolean
    Using conn As SqlConnection = New SqlConnection(ConnectionString)
        Dim cmd As New SqlCommand("Tags_TagExists", conn)
        cmd.CommandType = CommandType.StoredProcedure
        cmd.Parameters.AddWithValue("@Tag", name)
        conn.Open()
        result = Convert.ToBoolean(cmd.ExecuteScalar())
        conn.Close()
    End Using
    Return result
End Function
Run Code Online (Sandbox Code Playgroud)

我已经尝试将程序切换为如果标签存在则返回0,如果不存在则返回1并且尽管测试条件完全相同,它仍然返回0.我还返回了实际的选择查询,它抱怨标签"新闻"(我的测试项目)不是执行中的int,表明选择本身肯定是正确形成的.

如果有人能对此有所了解,谢谢迈克尔

Mar*_*tin 6

它应该是一个函数,但这里是存储的proc代码:

ALTER PROCEDURE [dbo].[Tags_TagExists](
    @Tag varchar(50))
AS
BEGIN
    If EXISTS(SELECT 1 FROM dbo.Tags WHERE LOWER(@Tag) = LOWER(Tag))
        BEGIN
            SELECT 1
        END    
    ELSE
        BEGIN
            SELECT 0
        END
END
Run Code Online (Sandbox Code Playgroud)