2011-11-16 263 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