tryCREATE PROCEDURE [query_myLoadDB] (@CompanyName [varchar](30),@ifWorker[bit])
AS 
declare @SQL varchar(255)
if (@ifWorker=true) 
   select 付款单位 from mymain group by 付款单位 
else 
begin
   set @SQL = "select 领票人 from " + @CompanyName + " group by  领票人"
   exec @SQL  
end 

解决方案 »

  1.   

    是你的这里错啦
      select 领票人 from @CompanyName group by  领票人sql语句不能这样写的
     declare @sql char
      select @sql =  'select 领票人 from'+ @CompanyName+' group by  领票人'
    CREATE PROCEDURE dbo.aa
       @CompanyName varchar(30),
       @ifWorker bit
    AS 
    declare @sql char
    if (@ifWorker=1) 
       select 付款单位 from mymain group by 付款单位 
    else 
       select @sql =  'select 领票人 from'+ @CompanyName+' group by  领票人'
      

  2.   

    drop procedure query_myloaddb
    go
    CREATE PROCEDURE [query_myLoadDB] (@CompanyName [varchar](30),@ifWorker[bit])
    AS 
    if (@ifWorker=1) 
       select 付款单位 from mymain group by 付款单位 
    else 
       select 领票人 from CompanyName group by  领票人
      

  3.   

    sorry, tryCREATE PROCEDURE [query_myLoadDB] (@CompanyName [varchar](30),@ifWorker[bit])
    AS 
    declare @SQL varchar(255)
    if @ifWorker = 1
       select 付款单位 from mymain group by 付款单位
    else 
    begin
         set @SQL = 'select 领票人 from  ' + @CompanyName + ' group by  领票人'
       exec @SQL 
    end
      

  4.   

    我也试过了,是不是From子句中不允许表名用变量来传递呀?
    关注,UP
      

  5.   

    drop procedure query_myloaddb
    go
    CREATE PROCEDURE [query_myLoadDB] (@CompanyName [varchar](30),@ifWorker[bit])
    AS 
    if (@ifWorker=1) 
       select 付款单位 from mymain group by 付款单位 
    else 
       begin
    select @SqlString = N'select 领票人 from '
             select @sqlString = @SqlString + @CompanyName
    select @Sqlstring  = @Sqlstring + N' group by  领票人' 
             exec sp_executesql @sqlstring        
       end
      

  6.   

    上面少定义变量了:我试过,没问题CREATE PROCEDURE [query_myLoadDB] (@CompanyName [nvarchar](30),@ifWorker[bit])
    AS 
    declare @sqlstring nvarchar(500)
    if (@ifWorker=1) 
       select 管理类型  from administer group by 管理类型 
    else  
       begin 
    select @SqlString = N'select 产品名称 from '
            select @sqlString = @SqlString + @CompanyName
    select @Sqlstring  = @Sqlstring + N' group by  产品名称' 
            print @sqlstring
            exec sp_executesql @sqlstring 
       end
      

  7.   

    又发错了^_^ 应该是这样
    CREATE PROCEDURE [query_myLoadDB] (@CompanyName [varchar](30),@ifWorker[bit])
    AS 
    declare @SqlString nvarchar(500)
    if (@ifWorker=1) 
       select 付款单位 from mymain group by 付款单位 
    else 
       begin
    select @SqlString = N'select 领票人 from '
             select @sqlString = @SqlString + @CompanyName
    select @Sqlstring  = @Sqlstring + N' group by  领票人' 
             exec sp_executesql @Sqlstring        
       end
      

  8.   

    set @sql =  'select 领票人 from'+ @CompanyName+' group by  领票人'
    exec @sql
    sql语句是要拚着用的
      

  9.   

    这是我的代码,请大家看看:如何修改?Public Sub myLoadDB(ByVal ifWorker As Boolean, ByVal strCompany As String, ByVal myObj As Object)
        
        '这样调用 myloaddb '0','c2',objname
        On Error GoTo Err
        Dim strL As String
        Dim cn As New ADODB.Connection
        Dim rs As New ADODB.Recordset
        With cn
            .CursorLocation = adUseClient
            .Open "Provider=SQLOLEDB;Server=" + ServerName + ";Database=myinvoice;Uid=sa;Pwd=" + ServerPassword + ";"
            If ifWorker Then
                strL = "query_myloaddb '0','" + strCompany + "'"
            Else
                strL = "query_myloaddb '1',' '"
            End If
        End With
        myObj.Clear
        With rs
            .CursorLocation = adUseClient
            .ActiveConnection = cn
            '此处有错误提示:未能找到存储过程 'select 领票人 from c2 group by 领票人'
            .Open strL
            While Not rs.EOF
                myObj.AddItem .Fields(0).Value
                .MoveNext
            Wend
        End With
        
        rs.Close
        Set rs = Nothing
        cn.Close
        Set cn = Nothing
        
        Exit Sub
    Err:
        ShowError
        
    End Sub