Oracle存储过程中 如何实现表名可动态传?

BlueSea_W 2003-03-12 08:46:30
Oracle存储过程中表名用何方法可实现动态传?
或者你有什么变通的方法吗?
...全文
220 6 打赏 收藏 转发到动态 举报
写回复
用AI写文章
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
hot.wind 2003-03-13
  • 打赏
  • 举报
回复
见下面的例子:
PROCEDURE drop_object
(object_type_in IN VARCHAR2, object_name_in IN VARCHAR2)
IS
cursor_id INTEGER;
BEGIN
/*
|| Open a cursor which will handle the dynamic SQL statement.
|| The function returns the pointer to that cursor.
*/
cursor_id := DBMS_SQL.OPEN_CURSOR;
/*
|| Parse and execute the drop command which is formed through
|| concatenation of the arguments.
*/
DBMS_SQL.PARSE
(cursor_id,
'DROP ' || object_type_in || ' ' || object_name_in,
DBMS_SQL.NATIVE);
/* Close the cursor. */
DBMS_SQL.CLOSE_CURSOR (cursor_id);
EXCEPTION
/* If any problem arises, also make sure the cursor is closed. */
WHEN OTHERS
THEN
DBMS_SQL.CLOSE_CURSOR (cursor_id);
END;
beckhambobo 2003-03-13
  • 打赏
  • 举报
回复
CREATE OR REPLACE PACKAGE pkg_test
AS
TYPE myrctype IS REF CURSOR;
END pkg_test;
/

create procedure name_pro(p_table in varchar2,p_rc out pkg_test.myrctype)
as
str varchar2(50);
begin
str:='select * from '||p_table;
open p_rc for str;
end;
/
ll779902 2003-03-12
  • 打赏
  • 举报
回复
你可以用动态SQL,如:
sql:='select * from '||变量名.....;
execute immediate sql;
BlueSea_W 2003-03-12
  • 打赏
  • 举报
回复
keisar
dynamic sql 如何实现?说具体些吧!
keisar 2003-03-12
  • 打赏
  • 举报
回复
dynamic sql
klyh 2003-03-12
  • 打赏
  • 举报
回复
不能,我这里也没有变通的方法!

17,377

社区成员

发帖
与我相关
我的任务
社区描述
Oracle 基础和管理
社区管理员
  • 基础和管理社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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