Oracle SQL 开发人员中的有效查询在 SSIS 中无效
Posted
技术标签:
【中文标题】Oracle SQL 开发人员中的有效查询在 SSIS 中无效【英文标题】:Valid Query in Oracle SQL developer is invalid in SSIS 【发布时间】:2020-11-10 21:46:21 【问题描述】:我的查询如下所示:
编辑(我几乎没有使用 PLSQL 的经验,如果您在脚本中使用 Begin/End,我刚刚读过一些帖子,您不再可以使用普通选择,您应该将该结果插入到某个地方!)可以这就是查询在 SSIS 中不起作用的原因吗? )
Variable x1 Number
Variable x2 Number
Variable x3 Number
Variable x20 Number
Begin select user_defined_function(parameters) into x1 from dual;
select user_defined_function(parameters) into x2 from dual;
select user_defined_function(parameters) into x3 from dual;
select user_defined_function(parameters) into x20 from dual;
End;
/
with Q1 as (....)
, Q2 as (....)
, Q3 as (...)
Select * from Q1,Q2,Q3 joining together
该查询在 SQL 开发人员中有效,但我必须使用执行脚本而不是 f5。否则会提示输入变量值。
正如我所怀疑的,当前格式的查询在 SSIS 中不起作用。我收到错误 INVALID SQL STATEMENT 900
【问题讨论】:
您打算在运行时提供变量值吗?通常使用 Oracle,我不得不求助于动态生成的 SQL 字符串。 @Nick.McDermaid 变量值应该通过选择语句用户定义的函数来检索。我不会输入任何内容 @Nick.McDermaid 这是否意味着我认为的意思?在各种 Oracle 连接管理器中缺乏对参数化查询的支持是 SSIS 中的一个不幸限制。 这四个Begin
和唯一一个End
之间的不平衡不是问题吗?
@MarmiteBomber 感谢您接收它,我在这里修复了它。我的实际脚本没有这个问题
【参考方案1】:
您可以使用额外的 CTO 将 user_defined_function 的结果传递给主查询,例如
with
x1 as (
select user_defined_function(parameters) as x1 from dual),
x2 as (
select user_defined_function(parameters) as x2 from dual),
...
在您的主查询中而不是使用
column1 = x1
你会写
column1 = (select x1 from x1)
这种方法消除了对变量和PL/SQL 块的需要,并使用纯SQL
【讨论】:
是的,显然你不能在 SSIS 的 ODBC 连接中使用纯选择的 PLSQL 块 实际上,您使用的是VARIABLE
的SQL*Plus 语法,这不太确定。您可以尝试使用DECLARE
定义变量,该变量将是 PL/SQL以上是关于Oracle SQL 开发人员中的有效查询在 SSIS 中无效的主要内容,如果未能解决你的问题,请参考以下文章