Отсутствие результатов в хранимой процедуре - PullRequest
0 голосов
/ 13 июля 2020

Почему-то каждый раз, когда я запускаю exe c

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;

Я не знаю, что мне не хватает.

1 Ответ

0 голосов
/ 13 июля 2020

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. Я считаю, что это полезная практика.

Кроме того, нет причин определять для этого хранимую процедуру. На мой взгляд, это лучше было бы определить как функцию.

...