请问oracle中有没有可动态执行sql语句的函数?

VCBeginer 2002-07-10 11:50:35
请问oracle中有没有可动态执行sql语句的函数?
例如select * from a,b
where a.dept_id in ( 函数?( b.depts) )
...全文
219 10 打赏 收藏 转发到动态 举报
写回复
用AI写文章
10 条回复
切换为时间正序
请发表友善的回复…
发表回复
VCBeginer 2002-07-10
  • 打赏
  • 举报
回复
对不起,我是想建一个视图,不能用过程
jlandzpa 2002-07-10
  • 打赏
  • 举报
回复
当然可以了
qiuyang_wang 2002-07-10
  • 打赏
  • 举报
回复
给你一段调试成功的例子,希望能给你些帮助。
DECLARE
PROPACK VARCHAR2(200);
V_CURSOR NUMBER;
V_NUMROWS INTEGER;
BEGIN
PROPACK := 'BEGIN' || CHR(10) || ' PRZK1_PRONAME(1);' || CHR(10);
PROPACK := PROPACK || ' EXCEPTION' || CHR(10) || ' WHEN OTHERS THEN' || CHR(10) || ' NULL;' || CHR(10);
PROPACK := PROPACK || 'END;' + CHR(10);
V_CURSOR := DBMS_SQL.OPEN_CURSOR;
DBMS_SQL.PARSE(V_CURSOR,PROPACK,DBMS_SQL.V7);
V_NUMROWS := DBMS_SQL.EXECUTE(V_CURSOR);
DBMS_SQL.CLOSE_CURSOR(V_CURSOR);
EXCEPTION
WHEN OTHERS THEN
NULL;
END;
blue__star 2002-07-10
  • 打赏
  • 举报
回复
可能不行吧
bzszp 2002-07-10
  • 打赏
  • 举报
回复
用dbms_sql来实现,
例:
CREATE OR REPLACE PROCEDURE demo(salary IN NUMBER) AS
cursor_name INTEGER;
rows_processed INTEGER;
BEGIN
cursor_name := dbms_sql.open_cursor;
DBMS_SQL.PARSE(cursor_name, 'DELETE FROM emp WHERE sal > :x',
dbms_sql.native);
DBMS_SQL.BIND_VARIABLE(cursor_name, ':x', salary);
rows_processed := dbms_sql.execute(cursor_name);
DBMS_SQL.close_cursor(cursor_name);
EXCEPTION
WHEN OTHERS THEN
DBMS_SQL.CLOSE_CURSOR(cursor_name);
END;
骨骨 2002-07-10
  • 打赏
  • 举报
回复
不知dbms_sql包可不可以用在这里面哦....
ythero 2002-07-10
  • 打赏
  • 举报
回复
s
VCBeginer 2002-07-10
  • 打赏
  • 举报
回复
select * from a,b
where a.dept_id in (函数?(b.depts))

因为b.depts的值刚好是'1,2,3,4,5',而a.dept_id的值为number型的,所以如果oracle有象javascript的eval那样函数可以把b.depts的值解释为代码的话就好了
zhoubf725 2002-07-10
  • 打赏
  • 举报
回复
其实简单的用EXECUTE IMMEDIATE V_SQL就可以了.

如果要动态创建VIEW:
V_SQL:='CREATE VIEW V_NAME AS SELECT * FROM .....;';
EXECUTE IMMEDIATE V_SQL;
注意:没有返回值.
KingSunSha 2002-07-10
  • 打赏
  • 举报
回复
select * from a,b
where a.dept_id in (函数?(b.depts))
这样的格式是不行的,即使函数返回一个象'1','2','3'这样的字符串,oracle会把这个字符串作为一个整体来处理,所以结果不对。

17,086

社区成员

发帖
与我相关
我的任务
社区描述
Oracle开发相关技术讨论
社区管理员
  • 开发
  • Lucifer三思而后行
  • 卖水果的net
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧