2011-02-15 27 views
2

我正在嘗試編寫一個Oracle查詢,該查詢在可以在查詢中引用的查詢之前設置了一些變量。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源,然後將從包級別變量中設置變量。

回答

1

如果你打算使用此查詢在一個OLEDB資料來源變量,你可能需要使用一個表達式,而不是SQL變量。所以,你會建立沿

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

我一直希望避免在表達式中手動構建查詢的路線,但我認爲這可能是最好的路線。據推測,我可以將OLEDB Source更改爲'來自變量的sql命令',並從上面的表達式填充變量? – hermiod 2011-02-16 14:55:04

8

甲骨文相當於SQL加:

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; 
+0

不幸的是,行的SQL語句,這種方法似乎並不運行從OLEDB源的查詢時,不斷想出「ORA-01008的工作:不是所有的變量綁定'即使我已經聲明,設置並使用了這兩個變量。儘管如此,這種方法在其他情況下仍然有用。 – hermiod 2011-02-16 14:57:01