-- 删除存储过程, 执行下面的语句来创建存储过程就可以了.SET ANSI_NULLS  ON
SET ANSI_WARNINGS ON
GOCREATE PROCEDURE inexcel 
(@fn varchar(1000))
AS
set @fn='''MICROSOFT.jet.oledb.4.0'',''excel 5.0;hdr=yes;database='+@fn+''''
set @fn='insert into grade(考号,姓名,性别,身份证,单位) select 考号,姓名,性别,身份证号,单位 from openrowset('+@fn+',sheet1$)'
exec(@fn)
GO

解决方案 »

  1.   

    http://topic.csdn.net/t/20030227/13/1472829.html2楼  pengdali   (璇玑的钻石)   回复于 2003-02-27 14:58:03  得分 50 
    请在查询分析器中创建这个存储过程,以后这个存储过程在企业管理和查询分析器都能修改了。       
          
      对于存储过程,SQL     Server     使用最初创建存储过程时的     SET     ANSI_NULLS     设置值。无论随后何时执行存储过程,SET     ANSI_NULLS     的设置都还原为其最初使用的值并生效。当在存储过程内唤醒调用     SET     ANSI_NULLS     时,其设置不更改。       
          
      在执行分布式查询时应将     SET     ANSI_NULLS     设置为     ON。       
          
      在执行分布式查询时应将     ANSI_WARNINGS     设置为     ON。       
          
      企业管理中的ANSI_NULLS和ANSI_WARNINGS选项不对,但没有方法改动。在查询分析器可以设置ANSI_NULLS和ANSI_WARNINGS选项,而且默认值是对的。所以能在查询分析器创建此类存储过程,而不能在企业管理器创建此类存储过程。   
        
      就是:   
      create   proc   名   
      as   
      SET   ANSI_NULL_DFLT_ON   on   --注意   
      SET   ANSI_WARNINGS   on     
        
      select   *   from   open... 
      

  2.   

    谢谢了,你们怎么啥都知道,我想学sql,有相关的经典的书介绍下么?也想成为高手亚