create procedure TableName(@SqlStr nvarchar(4000)) as 
begin  
  exec @SqlStr
endexec TableName  'select *  from emptable where empno='A00001''
用以上方法建立並執行存儲過程,出現:
伺服器: 訊息 170,層級 15,狀態 1,行 1
Line 1: Incorrect syntax near 'A00001'.
如果沒有where子句是可以執行的

解决方案 »

  1.   

    create procedure TableName(@SqlStr nvarchar(4000)) as 
    begin  
      exec(@SqlStr)
    endexec TableName  'select *  from emptable where empno=''A00001'''
      

  2.   

    create procedure TableName(@SqlStr nvarchar(4000)) as 
    begin  
      exec(@SqlStr)
    end
    goexec TableName 'select * from emptable where empno=''A00001'''
      

  3.   

    create procedure usp_ss(@SqlStr nvarchar(4000)) as 
    begin  
      exec (@SqlStr)
    endgo
    exec usp_ss  'select *  from h_login where id=2 ' drop proc usp_ss
      

  4.   

    CREATE procedure TableName(@SqlStr nvarchar(4000)) as 
    begin  
      exec (''+@SqlStr+'')
    end