2013-06-11 47 views
-2

为什么我从我的代码中得到这个错误?这在SQuirreL中运行,但我在Groovy中获得了"ORA-00933: SQL command not properly ended"。 Arrrrrrgh!请帮助我,你的知识是非常感激和co。。当我将输出写入文件时发生错误。如何选择正确的表格以备写入?Groovy - ORA-00933:SQL命令没有正确结束

这是结尾行(S)产生的错误:

file.write("") 
db.eachRow(sql) { 
    file.append(it.MOPID + "\t" + it.TYPE + "\n") 
} 

import groovy.sql.Sql 

def db = Sql.newInstance(
    'jdbc:oracle:thin:@10.10.47.193:1521:ORCL', 
    'reporter', 'r3p0rt3r', 'oracle.jdbc.pool.OracleDataSource') 

def sql = """ 

DROP TABLE TEMPXMOP24 

CREATE TABLE TEMPXMOP24 
(
    MOPID VARCHAR2(12), 
    TYPE VARCHAR2(200), 
    MOPSTART DATE, 
    MOPAPPROVEDTIME DATE, 
    TIME_DIF VARCHAR2(45), 
    TIME_ORDER NUMBER(10), 
    FIXED_MOP VARCHAR2(12), 
    MOP_HR VARCHAR2(2) 
); 

INSERT INTO TEMPXMOP24 (MOPID,TYPE,MOPSTART,MOPAPPROVEDTIME,TIME_DIF,TIME_ORDER,FIXED_MOP,MOP_HR) 
SELECT MOPACTIVITY.MOPID, 
MOPACTIVITY.MOPSERVICEIMPACTED "TYPE", 
MOPACTIVITY.MOPSTART, 
MOPACTIVITY.MOPAPPROVEDTIME, 
ROUND(MOPACTIVITY.MOPSTART - MOPACTIVITY.MOPAPPROVEDTIME,2)||' days' "TIME_DIF", 
ROUND(MOPACTIVITY.MOPSTART - MOPACTIVITY.MOPAPPROVEDTIME,0) "TIME_ORDER", 
(CASE 
    WHEN SUBSTR(MOPACTIVITY.MOPID, 7, 2) = '24' THEN SUBSTR(MOPACTIVITY.MOPID, 1, 6)||'00'||SUBSTR(MOPACTIVITY.MOPID, 9, 4) 
    ELSE MOPACTIVITY.MOPID 
END) FIXED_MOP, 
(CASE 
    WHEN SUBSTR(MOPACTIVITY.MOPID, 7, 2) = '24' THEN SUBSTR(MOPACTIVITY.MOPID, 7, 2) 
    ELSE SUBSTR(MOPACTIVITY.MOPID, 7, 2) 
END) MOP_HR 
FROM MOPUSER.MOPACTIVITY 
WHERE MOPACTIVITY.MOPSTART - MOPACTIVITY.MOPAPPROVEDTIME BETWEEN 0 and 14; 

SELECT * FROM TEMPXMOP24 
WHERE TRUNC(TO_DATE(FIXED_MOP, 'MMDDYYHH24MISS')) 
    BETWEEN TRUNC(SYSDATE-90) AND TRUNC(SYSDATE) 
ORDER BY "TIME_ORDER" 

def date = new Date() 
def dts = date.format("yyyy-MM-dd-HH-mm-ss") 
File file = new File('C:/Documents and Settings/e0148840/Desktop/' + dts + ' Caries 14 Day and Out.xls') 
file.write("") 
db.eachRow(sql) { 
    file.append(it.MOPID + "\t" + it.TYPE + "\n") 
} 
+0

这个问题似乎是脱离主题,因为它是关于一个小的语法错误/错字 –

回答

1

这里雅去!

import groovy.sql.Sql 

def db = Sql.newInstance(
    'jdbc:oracle:thin:@1X.XX.XXX.XXX:1521:ORCL', 
    'XXXXXX', 'XXXXXX', 'oracle.jdbc.pool.OracleDataSource') 

def sql = """ 
SELECT * FROM 
(SELECT MOPACTIVITY.MOPID, 
MOPACTIVITY.MOPSERVICEIMPACTED "TYPE", 
MOPACTIVITY.MOPSTART, 
MOPACTIVITY.MOPAPPROVEDTIME, 
ROUND(MOPACTIVITY.MOPSTART - MOPACTIVITY.MOPAPPROVEDTIME,2)||' days' "TIME_DIF", 
ROUND(MOPACTIVITY.MOPSTART - MOPACTIVITY.MOPAPPROVEDTIME,0) "TIME_ORDER", 
(CASE 
    WHEN SUBSTR(MOPACTIVITY.MOPID, 7, 2) = '24' THEN SUBSTR(MOPACTIVITY.MOPID, 1, 6)||'00'||SUBSTR(MOPACTIVITY.MOPID, 9, 4) 
    ELSE MOPACTIVITY.MOPID 
END) FIXED_MOP, 
(CASE 
    WHEN SUBSTR(MOPACTIVITY.MOPID, 7, 2) = '24' THEN SUBSTR(MOPACTIVITY.MOPID, 7, 2) 
    ELSE SUBSTR(MOPACTIVITY.MOPID, 7, 2) 
END) MOP_HR 
FROM MOPUSER.MOPACTIVITY 
WHERE MOPACTIVITY.MOPSTART - MOPACTIVITY.MOPAPPROVEDTIME BETWEEN 0 and 14) 
WHERE TRUNC(TO_DATE(FIXED_MOP, 'MMDDYYHH24MISS')) 
    BETWEEN TRUNC(SYSDATE-90) AND TRUNC(SYSDATE) 
ORDER BY "TIME_ORDER" 
    """ 
def date = new Date() 
def dts = date.format("yyyy-MM-dd-HH-mm-ss") 
File file = new File('C:/Output/' + dts + ' EXPEDITE_MOPS.xls') 
file.write("") 
db.eachRow(sql) { 
    file.append(it.MOPID + "\t" + it.TYPE + "\n") 
} 
0

你需要DROP TABLE TEMPXMOP24后一个分号。

相关问题