use tempdb;
go
if object_id('dbo.SyncSeq')is not null
 drop table dbo.SyncSeq;
gocreate table dbo.SyncSeq(val int);
insert into dbo.SyncSeq values(0);create proc dbo.usp_SyncSeq
  @val as int output,
  @n as int=1
as 
update dbo.usp_SyncSeq
  set @val = val + 1,val = val +@n
declare @val as int;
exec dbo.usp_SyncSeq  
  @val = @val output;
print @val上面是创建一个标志号表
执行存储过程时提示"对象名  'dbo.usp_SyncSeq' 无效。"
这儿有什么错误

解决方案 »

  1.   

    晕,你的表名和存储过程名不要一模一样啊。不然SQLServer找出来都不知道是表还是存储过程。
      

  2.   

    create proc dbo.usp_SyncSeq
       @val as int output,
       @n as int=1
     as 
     update dbo.usp_SyncSeq--这里应该改为你的表名称啊(dbo.SyncSeq)  
     set @val = val + 1,val = val +@n
     
      

  3.   

    看漏了,还是楼上细心USE tempdb ;
     go
     IF OBJECT_ID('dbo.SyncSeq') IS NOT NULL 
         DROP TABLE dbo.SyncSeq ;
     
     CREATE TABLE dbo.SyncSeq ( val INT ) ;
     INSERT  INTO dbo.SyncSeq
     VALUES  ( 0 ) ;
     GO
     
     CREATE PROC dbo.usp_SyncSeq
         @val AS INT OUTPUT ,
         @n AS INT = 1
     AS 
         UPDATE  dbo.SyncSeq
         SET     @val = val + 1 ,
                 val = val + @n
     GO