在执行以下代码的时候,当程序运行到第三句的时候报错
"CREATE PROCEDURE" must be the first statement in a query batch代码如下:1.  ADOQouery1.sal.clear;
2.  ADOQouery1.sal.loadfromfile('c:\a.sql');
3.  ADOQouery1.sal.execsql;请问是何原因。如何解决?

解决方案 »

  1.   

    ADOQuery1.ExecSQL 
    是这个吧??
      

  2.   

    中间加一名句
    ADOQouery1.sal.loadfromfile('c:\a.sql');
    showmessage(adoquery1.sql.text);
    ADOQouery1.sal.execsql;
    看你的a.sql写对没?
      

  3.   

    肯定不会有错的呀。我是用的一个SQL帮助中的一个例子呀
      

  4.   

    程序中就是写的ADOQouery1.execsql。我在这时多写了一个SQL,
      

  5.   

    ADOQouery1.sal.execsql;
    怎么这么写的?
    ADOQouery1.execsql
      

  6.   

    程序中是写的ADOQouery1.execsql
    我在这里发帖的时候写错了。
      

  7.   

    begin
    adoquery1.sql.clear;
    adoquery1.sql.text:='select * from  你的表名';
    showmessage(adoquery1.sql.text); 显示装载的SQL
    adoquery1.open;
    end;
    先用这个把你的替换了,能正常执行就是a.sql的问题了
      

  8.   

    CREATE PROCEDURE
    你的a.sql文件是否是一个创建存储过程的sql语句。你的提示直译是说:CREATE PROCEDURE必须是批查询的第一个语句。就是说,把create procedure 放在第一行。
      

  9.   

    if exists (select * from dbo.sysobjects where id = object_id(N'[dbo].[aaa]') and OBJECTPROPERTY(id, N'IsProcedure') = 1)
    drop procedure [dbo].[aaa]
      

  10.   

    利用ADOX中Catalog类的procedures属性可以获得数据库的全部存储过程名称。AdoX不是DELPHIA预装组件,你必须自己将其导入:实用Import Type Library功能将列表中的“Microsoft Ado Ext”对象导入并生成Adox的pascal包装代码文件,然后你可以创建Catalog类并获得其属性。
      

  11.   

    if exists (select * from dbo.sysobjects where id = object_id(N'[dbo].[aaa]') and OBJECTPROPERTY(id, N'IsProcedure') = 1)
    drop procedure [dbo].[aaa]
    GO --加上这一句,后面的就是新的批查询
    Create Procedure ......
      

  12.   

    在create procedure 前一行加个go就行了。