PL/SQL 通过 VBA 查询

PL/SQL query via VBA

我正在尝试通过 VBA 将文件中的 PL/SQL 查询传递给 Oracle 数据库。

SELECT * FROM DUAL这样的简单测试查询 完美运行。

但是有点复杂(甚至还没有PL/SQL)像

SELECT x, y, z FROM table WHERE DATE = '5may2017'

已经失败(实际上没有显式错误,只是空结果)。

我正在连接到 Conn.Provider = "OraOLEDB.Oracle.1",通过 ALTER SESSION SET CURRENT_SCHEMA=MyUserSchema 应用用户架构。最后我的最后一个代码片段是:

With Cmd
    .Properties("PLSQLRSet") = True '(actually this line doesnt affect)'
    .ActiveConnection = Conn
    .CommandType = adCmdText
    .CommandText = SqlStatement
    Set rs = .Execute
End With

Sheets(1).Range("A1").CopyFromRecordset rs

所以,excel sheet 填充了第一个测试最简单的查询,但是对于更复杂的部分仍然是空的(我最后没有分号 :) ) 然而最终的 sql-脚本将超过 400 行长...

这一步我错过了什么?

您可以试试 ANSI 日期 'YYYY-MM-DD' 或 ANSI 时间 'HH:MM:SS' SQL 下面的格式 用于使用 SQL ANSI DATE 或 SQL ANSI TIME 运算符的隐式转换。

SELECT x, y, z FROM table WHERE COLUMN_DATE = DATE '2017-05-05'
SELECT x, y, z FROM table WHERE COLUMN_TIME = TIME '23:59:59'
- according such "COL_" exists

必须保留备忘单以供快速参考PSOUG Datatypes

注意:对于 Toad 用户,请检查您的 NLS SELECT * FROM NLS_SESSION_PARAMETERS; ;你的 NLS_DATE_FORMAT 不是默认的 DD-MON-RR.