Sql server 如何在sql server的过程中调用过程
我有一个过程名Randomoutlet,我想通过其他过程调用该过程,如下代码所示Sql server 如何在sql server的过程中调用过程,sql-server,sql-server-2008,Sql Server,Sql Server 2008,我有一个过程名Randomoutlet,我想通过其他过程调用该过程,如下代码所示 ALTER procedure [dbo].[MainSchedule] as begin DECLARE @sup table (supervisorId int) INSERT INTO @sup SELECT DISTINCT SupervisorId FROM CallPlan .dbo .CallPlanSchedule WHERE MONTH (scheduledate)= MONTH (GET
ALTER procedure [dbo].[MainSchedule]
as
begin
DECLARE @sup table (supervisorId int)
INSERT INTO @sup SELECT DISTINCT SupervisorId FROM CallPlan .dbo .CallPlanSchedule WHERE MONTH (scheduledate)= MONTH (GETDATE ()) and YEAR (ScheduleDate )= YEAR(GETDATE())
DECLARE CUR CURSOR FORWARD_ONLY FOR SELECT * FROM @sup
DECLARE @suptem int
OPEN CUR
FETCH NEXT FROM CUR INTO @suptem
WHILE @@FETCH_STATUS =0
BEGIN
EXEC [dbo].[randomOutlet] @suptem
FETCH NEXT FROM CUR INTO @suptem
END
CLOSE CUR
DEALLOCATE CUR
end
保存MainSchedule时,会显示消息“模块“MainSchedule”依赖于缺少的对象“dbo.randomOutlet”。该模块仍将被创建;但是,在该对象存在之前,它无法成功运行。
"
当我运行这个程序时,它会出现错误“Msg 2812,16级,状态62,程序MainSchedule,第15行
找不到存储过程“dbo.randomOutlet”。“
请帮助我解决此问题,提前感谢我尝试了以下方法,并且一切正常
CREATE procedure CALL_PROC --'abc'
@var varchar(100)
as
begin
declare @sup table (item int)
insert into @sup select 1 union select 2
DECLARE CUR CURSOR FORWARD_ONLY FOR SELECT * FROM @sup
DECLARE @var1 int
OPEN CUR
FETCH NEXT FROM CUR INTO @var1
WHILE @@FETCH_STATUS =0
BEGIN
EXEC dbo.call_me @var1
FETCH NEXT FROM CUR INTO @var1
END
CLOSE CUR
DEALLOCATE CUR
end
go
CREATE PROCEDURE [dbo].[CALL_ME]
@VAR VARCHAR(100)
AS
if OBJECT_ID('tempdb..#temp') is not null
begin
insert into #temp select @VAR
end
else
select @var value into #temp
select * from #temp
go
请检查是否已在同一数据库上创建了对象。此过程[dbo].[randomOutlet]返回什么??它是返回一个整数还是一个表??如果只使用整型更好,则functionit不返回任何值。只是在该过程中有insert语句。您的错误意味着过程dbo.randomOutlet与MainSchedule不在同一服务器和数据库上。我知道你认为是的。但事实并非如此。这两个过程在同一个数据库上。但是当我运行它时,它仍然是错误的。在运行我的答案中的代码后,您是否会出错?我没有运行您的代码,因为它具有不同的业务逻辑。我在内部程序中做了很多事情。