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
.
我正在尝试通过 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
.