0

我正在尝试从城市和州值中获取正确的邮政编码。但是我从邮政编码中丢失了前导 0。

例子

create procedure sp_getCorrectvalue
as
Begin
     declare @value as nvarchar(5)
     set @value = '00254'
     return @value
End

declare @getValue as nvarchar(5)
Exec @getValue = sp_getCorrectvalue
select @getValue as zipCode

它应该返回00254,但它返回254的是不正确的

请帮忙谢谢

4

3 回答 3

7

一个过程的返回值只能是一个int,所以当你返回它时它会被转换。要返回一个字符串,您需要在结果或输出参数中返回它。

于 2013-02-20T22:28:47.530 回答
4

你应该创建一个函数

CREATE FUNCTION fn_getCorrectvalue()
RETURNS NVARCHAR(5)
AS
BEGIN
     declare @value as nvarchar(5)
     set @value = '00254'
     return @value
END

演示在http://sqlfiddle.com/#!3/29fa9/1/0


存储过程返回一个整数 ( http://msdn.microsoft.com/en-us/library/ms174998.aspx )

存储过程可以将整数值返回给调用过程或应用程序

于 2013-02-20T22:35:20.583 回答
0

实际上,我在 Mysql 中遇到了类似的问题,我有一个存储过程,它需要一个学生 ID IN Char(8)。如果 ID 为“00002563”并且 Out 为 VarChar。

如果我传入'00002563'并将其传递给put参数......所有如果get是varchar中的'2563'。

该程序的初衷是让学生输入他们的 ID,并让该程序对其进行处理并确定分配给他们的宿舍和房间号(如果找到)。

他们都没有找到..我怀疑原因是 varchar 正在转换为 INT。

于 2017-04-17T18:13:36.087 回答