sql—在存储过程中不获取任何结果

wfsdck30  于 2021-07-26  发布在  Java
关注(0)|答案(1)|浏览(393)

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

  1. communications_getCode @telCode='MX'

我得到的结果是空的。我知道我错过了什么,因为如果我跑了

  1. Select * from tbl_telCode where code = 'MX'

我得到结果(准确地说是1)。但如果我尝试这个过程,我会得到空白结果

  1. CREATE PROCEDURE dbo.communications_getCode
  2. @telcode varchar
  3. AS
  4. SELECT
  5. id, code, detail
  6. FROM
  7. tbl_telCode
  8. WHERE
  9. [code] = @telcode;

我不知道我错过了什么。

webghufk

webghufk1#

这个 varchar 在声明中默认为 varchar(1) . 当您传递较长的字符串时,它将被截断为一个字符。
在sql server中,始终使用字符串定义指定长度:

  1. CREATE PROCEDURE dbo.communications_getCode (
  2. @telcode varchar(255)
  3. ) AS
  4. BEGIN
  5. SELECT id, code, detail
  6. FROM tbl_telCode
  7. WHERE [code] = @telcode;
  8. END;

请注意,存储过程的主体被 Package 在 BEGIN / END . 我发现这是一个有用的做法。
而且,没有理由为此定义存储过程。在我看来,最好把它定义为一个函数。

相关问题