问题标签 [execute-immediate]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
1 回答
50 浏览

for-loop - 如何编写一个程序来自动执行一组查询

我已经编写了一个程序来授予对特定模式的所有表的权限以休息其他模式。

上述程序编译成功,但在执行时它没有进入FOR循环运行该EXECUTE IMMEDIATE块,但PL/SQL程序编译成功。

可以做些什么来修复我的程序并使其正常工作?

0 投票
4 回答
24254 浏览

oracle - 即使有 CREATE 表授权,立即执行也会失败

我在存储过程中使用执行立即命令创建表时遇到问题。但是我得到“权限不足”的错误。我检查了其他线程并确保用户已授予它“CREATE TABLE”权限。但是我仍然看到同样的错误。

我创建的虚拟程序是:

详细错误:

我做错了什么吗?

0 投票
1 回答
733 浏览

oracle - 在 where 子句中替换动态运算符而不是手动运算符

Oracle sql developer,在 where 子句中替换动态运算符而不是手动运算符

我正在编写带有一组运算符的 ARGUMENT 程序。

我只想在 where 子句中替换那个动态运算符。请指导我如何实现这一目标。

注意:在上面的查询中 ARGUMENT 有'+,<,>,<=,>='

0 投票
2 回答
187 浏览

oracle - 立即执行会填满库缓存

我有一个关于如何在库缓存中处理通过“立即执行”执行的查询的问题(我们使用 Oracle 11)。

假设我有这样的功能:

getfield 和 searchfield 在一个安装中始终相同(但在另一个安装中具有其他值,这就是我们使用动态 sql 的原因)所以这给我们留下了一个仅在 searchvalue (这是一个参数)方面不同的 sql。此函数在执行 x 次的循环中从另一个存储过程内部调用。存储过程在连接生命周期内通过 ODBC 连接执行 y 次。并且有 z 个连接,但每个连接都使用相同的数据库登录。

现在让我们也假设 searchvalue 在一个循环中改变了 b 次。

问题 1:在计算库缓存中将保留多少个 sql 副本时,我们是否可以忽略 searchvalue 可以具有的不同值(b),因为该值作为参数发送以立即执行?

问题2:循环会导致查询x次硬解析(查询将在库缓存中创建x次),还是Oracle可以重用查询?(为了简单起见,我们假设这里问题中所有调用的搜索值都是相同的)

问题 3:y(在一个连接的生命周期内从 odbc 调用存储过程的次数)是否也会乘以保存在库缓存中的查询副本的数量?

问题 4:z(具有相同 db 登录的同时连接数)是否乘以保存在库缓存中的查询副本数量?

主要问题:我应该在这里期待什么行为?行为是否可配置?出现这个问题的原因是,我们的代码已经生产了 4 年,现在我们的一位客户回复我们说“这个查询填满了我们的整个 SGA,而 Oracle 说这是你的错”。

0 投票
1 回答
578 浏览

stored-procedures - 存储过程使用 WHERE 子句执行立即错误

我正在尝试将存档表中的一行复制到原始表中。

如果没有 myWHERE子句,table2 的整个表将被复制到 table1。我当然不想要这个。因此,根据列出的 gridview 的 ID 值,表格将仅复制 ID 相同的行。

当我调试这些行时,我得到了列出的正确 ID DisplaySup.Rows(0).Cells(2).Text

然而我得到了错误

ORA-00904: "VAL_ID": 无效标识符

表 2 和表 1 具有相同的列;所以他们都有名为V_ID. 我不确定为什么Val_ID要标记错误。

VB.net 代码行:

所以我试图参考:EXECUTE IMMEDIATE with USING 子句给出错误

像这样修复 WHERE:

但我得到错误:

ORA-00904: "val_ID": 无效标识符

有关如何修复我的存储过程的任何建议?

更新:

尝试执行建议:

但得到错误:

对于 Select 语句后的 col72

我的表示例(两者相同) table2 的目的是当 table1 中的一行被删除时,table2 可以重新创建被删除的用户

表格1

ID CompanyName FirstName LastName ....(72 列)

表2

ID CompanyName FirstName LastName...(72 列)

0 投票
1 回答
772 浏览

oracle - 当表名和列名是动态时,使用立即执行时的增量提交

我需要更新一些表。要更新的表和列将从另一个表中获取。所以我在过程中的更新语句看起来像这样

如您所见,表名、set 子句和 where 子句都是动态构建的。我现在要做的是在每 n 条记录后执行一次提交。我怎么做?

0 投票
2 回答
422 浏览

plsql - pl/sql : 执行立即更新?

EMP_TMP在语句中如何以及在何处声明临时表mft

0 投票
1 回答
3700 浏览

oracle - 如何使用“立即执行”为变量赋值?

我试图execute immediate用作分配变量值的特殊要求。我正在使用以下代码并获得如下异常。

我得到的例外是:

从命令中的第 4 行开始的错误:

我不明白以下作业有什么问题。如果我单独进行分配,它就可以正常工作:

0 投票
3 回答
1430 浏览

oracle - 在 Oracle 中生成动态 SQL

我的 plsql 代码有问题并尝试了几乎所有方法。现在我失去了解决我的问题的想法和力量:)

情况是我想在所有表模式中搜索分配给变量 v_ss 的特定字符串并将其打印到 DBMS_OUTPUT。我知道这种情况有现成的解决方案,但我想自己编写代码。下面的代码在我的 v_stmt 中给了我一个“表不存在”的错误。我假设这个选择不能识别rec.column_name,但为什么呢?

这是我的代码:

你能给我解释一下我的错误以及如何修复它吗?提前致谢

0 投票
1 回答
667 浏览

oracle - 如何在此代码中正确使用 oracle EXECUTE IMMEDIATE

我有以下 pl sql 代码,它将提取 xml 标记值并使用 oracle 的 EXECUTE IMMEDIATE 语句将该值视为存储函数:

此代码将找到 xml 标记<function>并提取其值“get_val”(它本身是一个存储函数)并将调用此函数:

在上面的代码中 output := 'pkg_xmltool'||'.'||xml_output||'()';

我想通过以下方式对此进行评估:

output := pkg_xmltool.get_val() 这将调用get_val()将返回值 100 输出的函数。这是get_val函数体:

我是新的 oracle xml。请帮助更正此代码。