我正在尝试从城市和州的价值中获取正确的邮政编码。但我正在从邮政编码中失去领先的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
这是不正确的
请帮忙 感谢
答案 0 :(得分:7)
过程的返回值只能是int
,因此在返回时会转换它。要返回一个字符串,您需要在结果或输出参数中返回它。
答案 1 :(得分: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)
存储过程可以将整数值返回给调用过程或应用程序
答案 2 :(得分:0)
实际上我在Mysql中遇到了类似的问题 我有一个存储过程,其中学生ID为Char(8)。如果ID是&00; 00002563'并且具有Out那是VarChar。
如果我通过&00; 00002563'并将其传递给put参数......如果得到的话,那就是' 2563'在varchar。
该程序的初衷是让学生输入他们的身份证和处理程序,并确定他们分配的宿舍和房间号码(如果找到)。
这些都没有找到..我怀疑原因是varchar正被转换为INT。