2011-11-16 271 views
0

我在APEX中構建了一個簡單的應用程序。我的一個網頁是一個報告,併爲區域來源我有一些代碼來達到這個效果。我收到錯誤消息是在Oracle APEX中傳遞變量PL/SQL

ORA-00904: "var_out": invalid identifier 

本質變量:form_variable從一個搜索框來了,我可以傳遞到查詢字符串罰款(即替換「變量」和「:form_variable」,但我想它首先傳遞到一個函數,並把該輸出到字符串來代替。我敢肯定,這是簡單的東西,但對我的生活我不能工作了怎麼辦。

DECLARE 
variable VARCHAR2(10); 
query VARCHAR2(1000); 

-- Where var_out is an output 
BEGIN 
myfunction(:form_variable, var_out); 
variable := var_out; 

query := 'SELECT * FROM TABLE WHERE column = variable'; 

RETURN query; 

END; 

謝謝

回答

3

你需要聲明你的變量,var_out,在你的聲明塊中。

DECLARE 
    var_out VARCHAR2(10); 
    query VARCHAR2(1000); 

    -- Where var_out is an output 
    BEGIN 
    myfunction(:form_variable, var_out); 
    --variable := var_out; 

    query := 'SELECT * FROM TABLE WHERE column = '''||var_out||''''; 

    RETURN query; 

    END; 

另外,您的查詢字符串在您的示例中沒有進行任何替換。如果你的過程myfunction輸出清理了變量,你可以連接它。

+0

沒有必要爲out參數聲明2個變量。只要傳遞變量或var_out就足夠了。另外,在將變量連接到查詢時,請記住變量需要位於引號之間! - > column ='''|| variable ||'''';只是一個領導:) – Tom

+0

@Tom良好的連接,抓住了這一點。而且,這個額外的變量是不需要的。 – Wolf

+0

謝謝,這不是我的問題的全部範圍,但解決了我用這些代碼所遇到的麻煩。我發現我只需要連接兩個撇號,而不是3.我的問題的其餘部分與APEX說謊不喜歡我引用綁定變量而不使用if else語句來檢查它是否已設置。 – leejmurphy