SQL 取存储过程的返回值

declare@p1varchar(12)exec@p1=getcrdhselect@p1提示错误消息245,级别16,状态1,过程getcrdh,第26行在将varch... declare @p1 varchar(12)
exec @p1=getcrdh
select @p1
提示错误
消息 245,级别 16,状态 1,过程 getcrdh,第 26 行
在将 varchar 值 'CR2013100001' 转换成数据类型 int 时失败。

存储过程getcrdh为
set ANSI_NULLS ON
set QUOTED_IDENTIFIER ON
GO
ALTER PROCEDURE [dbo].[getcrdh]
AS
declare @dh varchar(12)
declare @zh int
declare @xh varchar(4)
BEGIN
SET NOCOUNT ON;
if exists(select cbillcode from cgrkz where month(cbilldate)=month(getdate()))
begin
set @zh = (select cast(right(max(cbillcode),4) as int) from cgrkz where month(cbilldate)=month(getdate()))+1
end
else
begin
set @zh=1
end
set @zh=10000+@zh
set @xh=right(cast(@zh as varchar(5)),4)
SET @dh='CR'+cast(year(getdate()) as varchar(4))+cast(month(getdate()) as varchar(4))+@xh
return @dh
END

将其中的SQL语句单独执行返回CR2013100001

不知道上面的exec会提示转化int
展开
 我来答
handangaoyang
推荐于2017-11-26 · TA获得超过2242个赞
知道大有可为答主
回答量:2633
采纳率:88%
帮助的人:922万
展开全部
你这个存储过程,这样直接返回字符串,是不行的。存储过程直接返回,只能返回int类型的数据,或者是int类型的字符串。

你需要为你的存储过程定义一个输出参数。然后在调用时,接收这个输出参数。
追问
怎么修改麻烦您给我说下嘛,真的是初学者啊
追答
--修改
ALTER PROCEDURE [dbo].[getcrdh] 
@dh nvarchar(12) output
AS
 declare @zh int
 declare @xh varchar(4)
BEGIN
 SET NOCOUNT ON;
if exists(select cbillcode from cgrkz where month(cbilldate)=month(getdate()))
 begin
  set @zh = (select cast(right(max(cbillcode),4) as int) from cgrkz where month(cbilldate)=month(getdate()))+1
 end
else
 begin
 set @zh=1
 end
 set @zh=10000+@zh
 set @xh=right(cast(@zh as varchar(5)),4)
 SET @dh='CR'+cast(year(getdate()) as varchar(4))+cast(month(getdate()) as varchar(4))+@xh
END
GO

--调用
declare @p1 varchar(12)
exec getcrdh @p1 output
select @p1
项夕嘉亥
2019-10-14 · TA获得超过3.6万个赞
知道大有可为答主
回答量:1.4万
采纳率:26%
帮助的人:751万
展开全部
存储过程应该有返回值的,
问题应该出现在你vb6的调用语句中(第二个参数是输出类型的参数,
是否有正确设置).
你可以在查询分析器中执行此存储过程,
看看返回的结果.
还有,
此存储过程中的select语句最好加上top
1限制,
因为你只要判断是否能选到结果而已:
select
top
1
*
from
tb_package
where
packagenumber=@a
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式