你可以用动态SQL来实现动态sql怎么实现,,详细说说吗
解决方案 »
- oracle 存储过程问题
- 请教各位一个关于if的问题...
- 快来帮我,感谢,关于ORACLE sql developer乱码问题!
- AWR生成报表后,怎么看到用户以前输入的SQL语句呢?
- oracle8i中能列出所有表对像的那个表叫什么
- 急啊。在线等,哪儿有关于OEM配置的技术文档啊?
- 菜鸟求助:oracle的触发器问题:触发器无效且未通过重新确认
- [求助] Winme操作系统无法安装oralce9i客户端?
- 请教:我的触发器为何无效?
- 我用exp和imp的时候怎么把导入导出结果保存下来?
- 客户端提交上来几千个字符串进行查询,怎么处理好一点?
- 新手求指教。oracle有没有SQLSERVER中类似openrowset的功能?
一下是动态SQL,就是根据不同的I的值来执行不同的SQL,你可以根据这个思路该一下你的SQLdeclare
-- Local variables here
i integer;
sql_str varchar2(2000);
a varchar2(100);
begin
i := 0;
if i = 0 then
sql_str := 'select ''i is equal 0'' from dual';
end if;
execute immediate SQL_STR
into A;
dbms_output.put_line(a);
i := 1;
if i > 0 then
sql_str := 'select ''i is greater than 0'' from dual';
end if; execute immediate SQL_STR
into A;
dbms_output.put_line(a);
i := 1;
end;
SELECT NVL(MAX(PA_LOCK_FLAG), 0)
FROM PA_PROGRESS_DEPT PA
WHERE PA.PA_MONTH_STR = V_PA_MONTH_STR
AND PA.DEPT_DISTINGUISH_NO IN
(SELECT HD.DEPT_DISTINGUISH_NO
FROM HR_DEPARTMENT HD
WHERE HD.DEPT_DISTINGUISH_NO IS NOT NULL
CASE WHEN IN_DEPTNO=''
/*在这里我想做个判断,如果传过来的参数IN_FLAF是空就用下面的sql*/
AND HD.DEPTNO =IN_DEPTNO
ELSE
/*如果传过来IN_FLAF是1就执行下面的sql*/
AND HD.DEPTNO IN
(SELECT HD.DEPTNO
FROM HR_DEPARTMENT HD
START WITH HD.DEPTNO = IN_DEPTNO
CONNECT BY PRIOR HD.DEPTNO = HD.PARENT_DEPT_NO))
END