set ANSI_NULLS ON
set QUOTED_IDENTIFIER ON
goALTER PROCEDURE [dbo].[sp_getExpert]
@jibie int,
@chengguo int
AS
BEGIN
DECLARE @renshu int
DECLARE @chaoshi int
DECLARE @tixing VARCHAR(2000) 
DECLARE @fig int
DECLARE @wuyong int
DECLARE @Expert varchar(20)
DECLARE @time datetime
declare @xuli varchar(20)

if(@jibie=0)
select @renshu=tejizjrs,@tixing=ShenBaoTXNR,
@chaoshi=ShenBaoCSSX from ChengGuoXTSZ if(@jibie=1)
select @renshu=gaojizjrs,@tixing=ShenBaoTXNR,
@chaoshi=ShenBaoCSSX from ChengGuoXTSZ if(@jibie=2)
select @renshu=putongzjrs,@tixing=ShenBaoTXNR,
@chaoshi=ShenBaoCSSX from ChengGuoXTSZ set @fig=0
         --@fig 用于循环时做参数
DECLARE cur_expert CURSOR FOR 
 SELECT  BianHao,(SELECT COUNT(*) AS Expr1 FROM
    ChengGuoPS  WHERE (ZhuanJiaBH = ZhuanJiaXX.BianHao)) AS quant FROM ZhuanJiaXX
WHERE (ChengGuoLB = 1) and jibie=@jibie ORDER BY quant asc

set @time=DATEADD(dd, @chaoshi, getdate()) OPEN cur_expert
WHILE (@@FETCH_STATUS = 0) and (@fig<@renshu)
BEGIN
FETCH NEXT FROM cur_expert INTO @Expert,@wuyong
--此处取通用序列
EXECUTE @xuli=QAMER_PA.dbo.sp_getSeqNo 'SEQ_ChengGuoPSBH' --set @xuli=FUNC.sp_getSeqNo("SEQ_ChengGuoPSBH")
insert into ChengGuoPS (BianHao,ZhuanJiaBH,YeWuBH,TiXingRQ) values (@xuli,@Expert,@chengguo,@tixing)
set @fig=@fig+1
END

CLOSE cur_expert
DEALLOCATE cur_expert
PRINT 'The indexes on all tables have been rebuilt.'END
----------
报错内容是:
消息 208,级别 16,状态 6,过程 sp_getExpert,第 53 行
对象名 'dbo.sp_getExpert' 无效。

解决方案 »

  1.   

    EXECUTE @xuli=QAMER_PA.dbo.sp_getSeqNo 'SEQ_ChengGuoPSBH'说明下这句是调用别的存储过程   QAMER_PA 是同一sqlserver服务器上的另外一个数据库名
      

  2.   

    ALTER PROCEDURE [dbo].[sp_getExpert]
    对象名 'dbo.sp_getExpert' 无效。
    在不在这个服务器上的啊/?>?
      

  3.   


    在 QAMER_PA.dbo.sp_getSeqNo的存储过程中这样调用  数据库名.dbo.sp_getExpert试以下那?
      

  4.   

    ALTER PROCEDURE [dbo].[sp_getExpert]
    要不,你把 alter 换成 create 试试?
      

  5.   

    老大们  我又试过了
    把原来的存储过程删掉 
    代码不变  重新create
    出现下列错误描述:
    无法在 sysdepends 中添加当前存储过程所对应的行,因为缺少该存储过程所依赖的对象 'QAMER_PA.sp_getSeqNo'。仍将创建该存储过程。
    救救火啊~!   我这个是在存储过程中调用同一sqlserver 服务器别的数据库QAMER_PA的存储过程
      

  6.   

    在存储过程中调用同一sqlserver 服务器别的数据库QAMER_PA的存储过程你要确定你有没有条用 QAMER_PA 这个数据库下面存储过程的权限,另外这个sp_getSeqNo是用 dbo 建的吗?如果一切正常,那么你随便换个数据库执行 exec QAMER_PA.dbo.sp_getSeqNo 看看能不能成功
    如果这样都不能成功,那么就是看你权限了,千万注意你的所有者是不是dbo
      

  7.   

    'QAMER_PA.sp_getSeqNo'?应该是'QAMER_PA.dbo.sp_getSeqNo'吧检查存储过程的所有者是不是dbo。