在存储过程中没有得到任何结果

Not getting any results in stored procedure

出于某种原因,每次我 运行 exec

communications_getCode @telCode='MX'

我得到空结果。我知道我错过了一些东西,因为如果我 运行

Select * from tbl_telCode where code = 'MX'

我得到了结果(准确地说是 1)。但是如果我尝试使用该程序,我会得到空白结果

CREATE PROCEDURE dbo.communications_getCode
    @telcode varchar
AS
    SELECT 
        id, code, detail
    FROM 
        tbl_telCode
    WHERE
        [code] = @telcode;

我不知道我错过了什么。

声明中的varchar默认为varchar(1)。当您传递一个较长的字符串时,它会被截断为一个字符。

在SQL服务器中,总是用户使用字符串定义的长度:

CREATE PROCEDURE dbo.communications_getCode (
    @telcode varchar(255)
) AS
BEGIN
    SELECT id, code, detail
    FROM tbl_telCode
    WHERE [code] = @telcode;
END;

请注意,存储过程的主体包含在 BEGIN/END 中。我发现这是一种有用的做法。

此外,没有理由为此定义存储过程。在我看来,这最好定义为一个函数。