Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/sql/69.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Sql 在存储过程中执行视图_Sql_Oracle_Plsql - Fatal编程技术网

Sql 在存储过程中执行视图

Sql 在存储过程中执行视图,sql,oracle,plsql,Sql,Oracle,Plsql,是否可以使用存储过程执行视图 我的过程应该首先运行视图(总共有两个),然后将这两个视图数据合并到一个不同的表中,以应用转换 大概是这样的: create or replace procedure procname as begin here my views should get triggered and then starts my execute immediate 'truncate table transtable'; insert ... ..... ... exception

是否可以使用存储过程执行视图

我的过程应该首先运行视图(总共有两个),然后将这两个视图数据合并到一个不同的表中,以应用转换

大概是这样的:

create or replace procedure procname as
begin
here my views should get triggered and then starts my

execute immediate 'truncate table transtable';
insert
...
.....
...

exception
end;
什么叫“使用存储过程执行视图”?如何“触发”视图

如果您想询问是否可以在过程中创建视图,那么可以使用
立即执行
。不过,在甲骨文中,这是非常不寻常的做法。我们首先创建视图(在SQL级别),在任何地方使用它们(在SQL或PL/SQL中),这就是我建议您做的

若你们问为什么,原因很简单:动态SQL不可伸缩,很难维护和调试,而且——若其中并没有任何“动态”,就不要使用它

此外,如果您稍后在代码中引用这些视图(并且它们在编译时不存在),PL/SQL过程将无法使用ORA-00942(表或视图不存在),这意味着代码的其余部分也应该是动态的

在我看来,地平线上的噩梦


从您目前发布的内容来看,我不明白您为什么要坚持动态地这样做:

  • 在SQL级别“立即”创建视图
  • 在程序中使用它们

视图从中选择,而不是执行、运行或触发。请更新您的原始帖子,提供更多关于“触发”的详细信息。你到底想在这里干什么?