创建表时绑定变量?

时间:2015-10-26 17:46:44

标签: oracle plsql ddl bind-variables

我尝试创建一个按可变日期过滤的表,具体取决于当前日期。虽然我是Oracle和PL / SQL的新手,但我已经成功地写了一些高初学者" PL / SQL过程。但我想知道我是否采用正确的方法使用变量来实现我的目标。我想要做的简化版本:

创建表myTable为 从oldTable中选择* effective_date是> variabledate

使用查询本身中的case语句而不是使用case语句创建变量然后在查询中使用变量,这可能更好。但我认为变量会更简化,更易于阅读,并且可能运行得更快。

我用Google搜索并搜索过,但我发现的大部分内容都试图告诉我如何来编写它,而不是我的方法是最有效的。

非常感谢任何想法/建议!

1 个答案:

答案 0 :(得分:0)

尝试在您的程序中使用动态SQL。

create Procedure proc_name (variabledate date) IS

 v_sql_stmt varchar2(1000);

BEGIN

v_sql_stmt ='从oldTable中创建表myTable作为Select * effective_date是> :bind_variabledate&#39 ;;

EXECUTE IMMEDIATE v_sql_stmt使用variabledate;

端;

PS。不建议使用动态SQL,因为它容易出现SQL注入并且不易调试,你真的需要知道在使用它时你会发现什么。话虽如此,它是在运行时操作数据时使用的强大功能。