AS的位置不对,应该是在指定的3个参数之后
CREATE PROCEDURE dbo.proUpdateJsd 
-------------------------------AS
declare @tabjsd varchar(20)
declare @tabcompany varchar (20)
declare @unitname varchar(50)
AS------放这里吧

解决方案 »

  1.   

    --试试
    CREATE PROCEDURE dbo.proUpdateJsd 
     @tabjsd varchar(20),
     @tabcompany varchar (20),
     @unitname varchar(50)
    asexec('UPDATE '+@tabjsd+
    'SET parentname =(SELECT company_name FROM '+@tabcompany
     +'WHERE '+@tabcompany+'.company_subname =@unitname), 
        parentid =
              (SELECT parentid
             FROM '+@tabcompany+
             'WHERE '+@tabcompany+'.company_subname = @unitname,   companyid=(select company_id from '+@tabcompany+'where '+@tabcompany+'.company_subname =@unitname')
    goexec proUpdateJsd 'jsdchang1','company1','金马公司'
      

  2.   

    --这样应该可以了
    create PROCEDURE dbo.proUpdateJsd 
     @tabjsd varchar(20),
     @tabcompany varchar (20),
     @unitname varchar(50)
    as
    exec( 'UPDATE '+@tabjsd+' SET parentname =(SELECT company_name FROM '
    +@tabcompany+' WHERE '+@tabcompany+'.company_subname ='''+@unitname
    +'''),parentid =(SELECT parentid FROM '+@tabcompany+' WHERE '+@tabcompany
    +'.company_subname ='''+@unitname+'''),companyid=(select company_id from '+@tabcompany
    +' where '+@tabcompany+'.company_subname = '''+@unitname+''')' )
    goexec proUpdateJsd 'jsdchang1','company1','金马公司'