我现在想用AdoQuery.sql调用文件来创建数据库视图,但在执行过程中有以下错误:
在create 附近有错误,
我的文件内容如下:
CREATE VIEW dbo.VIEW_MONTH_TOLL AS 
( SELECT work_date,station_id, SUM(CASE WHEN vehicle_class=1 AND vehicle_case<>6 THEN toll_receivable ELSE 0 END ) AS type1, SUM(CASE WHEN vehicle_class=2 AND vehicle_case<>6 THEN toll_receivable ELSE 0 END ) AS type2, SUM(CASE WHEN vehicle_class=3 AND vehicle_case<>6 THEN toll_receivable ELSE 0 END ) AS type3, SUM(CASE WHEN vehicle_class=4 AND vehicle_case<>6 THEN toll_receivable ELSE 0 END ) AS type4, (SELECT SUM(TOLL) TOLL 
FROM TBL_WASTE_STATION_SPECIAL 
WHERE TBL_WASTE_STATION_SPECIAL.WORK_DATE=tbl_rpt_vehtype_toll_yz.WORK_DATE) AS BAD_TOLL FROM tbl_rpt_vehtype_toll_yz 
GROUP BY work_date,station_id ) 
CREATE VIEW dbo.VIEW_ORGANINFO AS SELECT STATION_ID AS OWNER_ID, NODE_NAME AS ORGAN_NAME, STATION_ID & 0xFF00 AS AINOWNER_ID, NODE_CLASS FROM dbo.TBL_NODE_INFOR WHERE (NET_TOLL_FLAG = 1) AND (NODE_ID = 0)最后我发现,是第二个create veiw有错,如果我只放一个create,那不会报错,但放上两个旧有错误,我想应该是两个create之间应该加一个分离的语句,如go,但加上go,就出现在go附近有错误的提示。不知何故!
注:如果在文件内写上边两个中的任意一个都不会出错。
请教!

解决方案 »

  1.   

    SQL属性只能执行一个语句吧 你让它执行两个 对它来说可能太辛苦
      

  2.   

    给那些不知道的人说个秘密:
    利用AdoQuery.sql.loadfromfile('ddd.txt')可以执行多条sql语句!!
    比如多条insert、update、create table等等,
    但是在执行多条create view和create procedure时,好像有错,希望各位大虾帮忙卡看什么原因
      

  3.   

    建立视图的方法(文本文件必须是纯文本在--Word中有纯文本格式)
    DataModule_z.sUserName//计算机名称
    DataModule_z.spassword//数据库密码
    用以下方法必须还要OSQL.EXE文件(文件在SQL Server 下的Binn中)
    DataModule_z.Sosql:='osql /U ' + DataModule_z.sUserName + ' /P ' + DataModule_z.spassword + ' /i Motorcycle1.sql';
    winexec(PCHAR(DataModule_z.Sosql),sw_hide);
      

  4.   

    补充:
    请讲OSQL.EXE文件方在当前程序路径下。
      

  5.   

    gzxwxj(zx):
    你说的不对,只要在计算机上安装了sql server,就不用再管osql.exe在什么位置了,系统的path中已经指明它的路径了,也就是说,不需要你在当前程序路径下放osql.exe文件了
      

  6.   

    给那些不知道的人说个秘密:
    利用AdoQuery.sql.loadfromfile('ddd.txt')可以执行多条sql语句!!
    比如多条insert、update、create table等等,
    但是在执行多条create view和create procedure时,好像有错,希望各位大虾帮忙卡看什么原因
    ==============================================================
    “噔噔噔噔噔”是什么,是我晕。
    你是从哪里知道这个秘密的,你是不是看过有的书上有过执行多条SQL语句的情况!告诉你吧,那是经过处理的。
    那样的程序的思路是:
    1.载入*.sql或其他文本文件
    2.查找第一个;前的语句
    3.执行第一个SQL语句
    4.删除第一个;前的语句包括第一个;号
    5.重复第二步的工作直到程序中没有;为止