求高手解助一个很简单的存值储过程!很急! ( 积分: 100 )

  • 主题发起人 主题发起人 zpselect
  • 开始时间 开始时间
Z

zpselect

Unregistered / Unconfirmed
GUEST, unregistred user!
现在有两个存储过程,其中一个存储过程在运行时需要调用别一个带有参数的存储过程,请问怎样写才对?
存储过程一:
CREATE PROCEDURE GetSerialBH
@PCBH Varchar output,
@printerBH Varchar output,
@VGABH Varchar output
as
Declare
@pc char(6),
@print char(6),
@VGA char(6)
BEGIN
SELECT @PC=MAX(PJ_BH) FROM PJBH WHERE PJ_LB='M' /****M:代有主机****/
SELECT @Print=MAX(PJ_BH) FROM PJBH WHERE PJ_LB='P' /**** P:代表打印机*****/
SELECT @VGA=MAX(PJ_BH) FROM PJBH WHERE PJ_LB='V' /**** V:代表显示器*****/
set @PC=ReturnValue(@PC) //调用存储过程二,但是调试错误!
END
GO

存储过程二:
CREATE PROCEDURE ReturnValue
@Value Varchar(7)
AS
Declare
@i int ,
@s varchar(7) ,
@n int
set @i=1
set @n=Convert(int ,Substring (@Value,4,4)) /*ubstring(COM0001,4,4)=0001**/
set @s= isnull(@s,'')
while @i<=4-Len(@n)
begin
set @s=@s+'0'
set @i=@i+1
end
Select @s+Convert(varchar ,@n)
GO
 
将过程2,改为输出参数.
然后过程1
exec ReturnValue(output @PC)
 
另一个方法,是将过程2改为函数,就可以象你那样调用了.但要加 dbo.
set @PC=dbo.ReturnValue(@PC)
 
不行啊,说exec 附近语法错误!
 
CREATE FUNCTION ReturnValue(@Value Varchar(6))
RETURNS VarChar(6)
AS
begin
Declare
@i int ,
@s varchar(7) ,
@n int
set @i=1
set @n=Convert(int ,Substring(@Value,4,4)) +1 /***Substring(COM0001,4,4)=0001 ****/
set @s= isnull(@s,'')

while @i<=4-Len(@n)
begin
set @s=@s+'0'
set @i=@i+1
end
Return @s+Convert(varchar ,@n)
end

这是存储过程,调用了刚才的函数
CREATE PROCEDURE GetSerialBH
@PCBH Varchar output,
@printerBH Varchar output,
@VGABH Varchar output
as
Declare
@pc char(6),
@print char(6),
@VGA char(6)
BEGIN
SELECT @PC=MAX(PJ_BH) FROM PJBH WHERE PJ_LB='M' /****M:代有主机****/
SELECT @Print=MAX(PJ_BH) FROM PJBH WHERE PJ_LB='P' /**** P:代表打印机*****/
SELECT @VGA=MAX(PJ_BH) FROM PJBH WHERE PJ_LB='V' /**** V:代表显示器*****/
SET @PCBH=ReturnValue(@PC)
END
GO
提示:没有识别ReturnValue
 
可能语法写错了

调用
exec prOut @rsFeiLv output

输出参数过程:
CREATE procedure prOut ( @rsFeiLv varchar(10) output )
AS
set @rsFeiLv='abc'
GO
 
前面说了,如果是函数,加 dbo.

SET @PCBH=dbo.ReturnValue(@PC)
 
set @pcbh = dbo.returnvalue(@pc)
这样写,可以了!谢谢指点!
散分
 
后退
顶部