http://blog.csdn.net/zjcxc/archive/2003/12/29/20084.aspx

解决方案 »

  1.   

    老大,我用的是你的存储过程啊
    只不过,能否如此执行:
    exec p_exporttb @sqlstr='exec pr_getemail'@sqlstr='exec pr_getemail',@path='f:\zwmail\',@fname='''@Vshpchd+''''.xls',@sheetname=''这样执行总是提示EXEC错误.
    似乎不能用EXEC执行存储过程代替查询?
    那如何把EXEC PR_GETEMAIL的结果导出为EXECL表格呢?
      

  2.   

    exec p_exportdb @sqlstr='exec pr_getemail'这样可以吗?
      

  3.   

    不行, sql语句不能是存储过程
      

  4.   

    你看看你的存储过程能否用下面的语句调用, 如果可以的话, 便氢下面的调用语句做为我的存储过程的参数select * from openrowset('sqloledb'
    ,'Trusted_Connection=yes'
    ,'exec 库名..存储过程名')
      

  5.   

    谢谢老大,我已经搜索过这个方法,并使用过了,但是还是提示出错,我的语句是:exec p_exporttb @sqlstr='select * from openrowset(''sqloledb'',''Trusted_Connection=yes'',''exec qq..pr_getemail'')',@path='f:\zwmail\',@fname='sss.xls',@sheetname='ss'出错提示是:
    --------------------------------------(所影响的行数为 1 行)服务器: 消息 7391,级别 16,状态 1,行 1
    该操作未能执行,因为 OLE DB 提供程序 'SQLOLEDB' 无法启动分布式事务。
    OLE DB 错误跟踪[OLE/DB Provider 'SQLOLEDB' ITransactionJoin::JoinTransaction returned 0x8004d00a]。
    [OLE/DB provider returned message: 新事务不能登记到指定的事务处理器中。 ]
      

  6.   

    我把pr_getemail已经放到服务器上了,已经解决这个问题了.谢谢