【问题标题】:Oracle variables甲骨文变量
【发布时间】:2011-02-15 16:26:41
【问题描述】:

我正在尝试编写一个 Oracle 查询,该查询在查询之前设置了一些变量,然后我可以在查询中引用这些变量。

我可以在 SQL Server 中执行以下操作:

DECLARE @ReviewID as VARCHAR(3)
DECLARE @ReviewYear AS VARCHAR(4)

SET @ReviewID = 'SAR'
SET @ReviewYear = '1011'

select * from table1 where review_id = @ReviewID and acad_period = @reviewyear

什么是上述的 Oracle 等价物?我已经尝试过游标和绑定变量,但显然做错了,因为这些方法不起作用。

Oracle 查询旨在进入 SSIS 中的 OLEDB 源,然后将从包级变量中设置变量。

【问题讨论】:

    标签: oracle variables plsql ssis


    【解决方案1】:

    SQL Plus 中的 Oracle 等效项:

    VAR ReviewID VARCHAR(3)
    VAR ReviewYear VARCHAR(4)
    
    EXEC :ReviewID := 'SAR';
    EXEC :ReviewYear := '1011';
    
    select * from table1 where review_id = :ReviewID and acad_period = :reviewyear;
    

    【讨论】:

    • 不幸的是,从 OLEDB 源运行查询时,此方法似乎不起作用,即使我已经声明、设置和使用了这两个变量。这种方法将在其他场景中派上用场,尽管如此赞成。
    【解决方案2】:

    如果您要在 OleDb Source from 变量中使用此查询,您可能需要使用表达式而不是 SQL 变量。因此,您将按照以下方式构建 SQL 语句

    "select * from table1 where review_id = " + @[User::ReviewID] + " and acad_period = " + @[User::ReviewYear]
    

    【讨论】:

    • 我希望避免走在表达式中手动构建查询的路线,但我认为这可能是最好的路线。据推测,我可以将 OLEDB 源更改为“来自变量的 sql 命令”,然后从执行上述操作的表达式中填充变量?
    • 是的,您将能够将表达式构建到变量中,并按照您所说的在 OleDb 源中使用它。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2010-10-05
    • 2011-07-19
    • 2014-09-11
    • 2011-06-15
    相关资源
    最近更新 更多