Oracle 中的动态选择

维尼修斯·塞加林

我想做这样的事情:

sql_str := 'select ';    
if (user_input = 1) then
    sql_str := sql_str || 'a.col1 from tb1 a';
else
    sql_str := sql_str || 'a.col1, b.col2, b.col3 from tb1 a, tb2 b';

execute sql_str

我对 Oracle 的过程、函数等没有太多的经验,更不用说。

我无法找出如何在 Oracle 中创建过程(或函数)来执行上述代码。

任何帮助表示赞赏。谢谢你。

fg78nc

由于您没有返回任何值,我们必须进行程序。虽然用例不清楚。

CREATE PROCEDURE dyn_sql_query (user_input IN NUMBER)
    IS
       sql_str VARCHAR2 (500) := 'SELECT ';
    BEGIN
       IF (user_input = 1) 
       THEN sql_str := sql_str || 'a.col1 from tb1 a';
       ELSE sql_str := sql_str || 'a.col1, b.col2, b.col3 from tb1 a, tb2 b';
       END IF;
       EXECUTE IMMEDIATE sql_query;
    END;

这是RETURN接受表名并返回行数的函数(注意)的非常基本的脚本

 CREATE FUNCTION count_rows (table_name IN VARCHAR2)
       RETURN PLS_INTEGER   // 
    IS
       sql_query VARCHAR2 (500) := 'SELECT COUNT(*) FROM ' || table_name;
       ret_val PLS_INTEGER;
    BEGIN
       EXECUTE IMMEDIATE sql_query INTO ret_val;
       RETURN ret_val;
    END;

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章