一个颇高难度的存储过程

civb 2004-04-30 03:17:52
create or replace procedure delete_all(pName varchar2) is
begin
delete Tbparam where Name= pName and BS in (select BS from TbBase);
..................
end delete_all;


怎么增加一两句,把TbBase 相应的BS的记录也删掉。
我只能想到临时表。不知道怎么在orcale中创建临时表
比如sql中的select into b from a;

...全文
36 6 点赞 打赏 收藏 举报
写回复
6 条回复
切换为时间正序
当前发帖距今超过3年,不再开放新的回复
发表回复
civb 2004-04-30
老大详细点阿。。
我试了是错误的阿
strstr varchar(200);
strstr:='select * from test';
错误了。
  • 打赏
  • 举报
回复
atao245993 2004-04-30
PL/SQL可以执行DDL。用动态SQL。
先定义个字符串,比如SQLSTR,然后用下列语句
execute immediate SQLSTR

只是连接字符串的时候注意字符串标记符号'的问题就可以了。
  • 打赏
  • 举报
回复
civb 2004-04-30
存储过程不能Create table ,select的吗?真的晕了。
  • 打赏
  • 举报
回复
civb 2004-04-30
阿涛是写在存储过程中的马。。?
怎么是MGR-00072: There is no more information about this error.

lilygy5(我爱oracle) 的办法不是看到很懂。。

Create table tbxxxxx as select .............这个直接执行可以,放到
存储过程中就不灵啦。。

存储过程中联执行这样的语句都error?
create or replace procedure testtest is
begin
select * from test2;
end testtest;

There is no more information about this error.

  • 打赏
  • 举报
回复
atao245993 2004-04-30
sqlstr='create table tempdelete as select bs from tbparam where name='''||pname||''' '||and bs in (select bs from tbbase);

execute immediate sqlstr;

delete from tbbase where bs in (select bs from tempdelete);

sqlstr='drop table tempdelete';

execute immediate sqlstr;
  • 打赏
  • 举报
回复
lilygy5 2004-04-30
create global temporary tablename(column list)
on commit perserve rows; --提交保留数据,会话临时表
on commit delete rows;  --提交删除数据,事务临时表
  • 打赏
  • 举报
回复
相关推荐
发帖
基础和管理
加入

1.7w+

社区成员

Oracle 基础和管理
申请成为版主
帖子事件
创建了帖子
2004-04-30 03:17
社区公告
暂无公告