当条件比较字符串时,如何从存储过程中获得输出



这是我的存储过程:

ALTER PROCEDURE [dbo].[PR_City_SelectByPK]
@CityName varchar
AS
SELECT [dbo].[City].[CityName], [dbo].[City].[State]
FROM [dbo].[City]
WHERE [dbo].[City].[CityName] = @CityName

主键是CityName。我正在尝试将CityName和State作为存储过程的输出,但没有得到任何输出值作为回报。

Never在SQL Server中使用不带长度参数的字符串类型。默认值因上下文而异。在这种情况下,它是1。

所以,试试这样的东西:

ALTER PROCEDURE [dbo].[PR_City_SelectByPK] (
@CityName varchar(255)
) AS
BEGIN
SELECT [dbo].[City].[CityName], [dbo].[City].[State]
FROM [dbo].[City]
WHERE [dbo].[City].[CityName] = @CityName;
END;

注:

  • 我还强烈建议始终将身体封闭在BEGIN/END块中。这样可以清楚地显示存储过程的结束位置
  • 对于这种类型的操作,可以考虑使用用户定义的函数

@CityName参数是varchar,没有大小,如果是varchar(1(,则需要将其大小设置为varchar(50(:

ALTER PROCEDURE [dbo].[PR_City_SelectByPK]
@CityName varchar(50)
AS
SELECT [dbo].[City].[CityName], [dbo].[City].[State]
FROM [dbo].[City]
WHERE [dbo].[City].[CityName] = @CityName

最新更新