我尝试创建一个按可变日期过滤的表,具体取决于当前日期。虽然我是Oracle和PL / SQL的新手,但我已经成功地写了一些高初学者" PL / SQL过程。但我想知道我是否采用正确的方法使用变量来实现我的目标。我想要做的简化版本:
创建表myTable为 从oldTable中选择* effective_date是> variabledate
使用查询本身中的case语句而不是使用case语句创建变量然后在查询中使用变量,这可能更好。但我认为变量会更简化,更易于阅读,并且可能运行得更快。
我用Google搜索并搜索过,但我发现的大部分内容都试图告诉我如何来编写它,而不是我的方法是最有效的。
非常感谢任何想法/建议!
答案 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注入并且不易调试,你真的需要知道在使用它时你会发现什么。话虽如此,它是在运行时操作数据时使用的强大功能。