嗯,是的,它在sql层中不起作用,但在pl/sql中会起作用。在sql*中,还有 exec 你可以使用(正如你已经知道的)。它有点“取代” begin-end 让你比平时少打几个字母。 因此,在您的示例中:由于是pl/sql,您需要 INTO 条款:
SQL> var datevar varchar2(10);
SQL> exec select trunc(sysdate) into :datevar from dual; --> note INTO
PL/SQL procedure successfully completed.
SQL> print datevar
DATEVAR
--------------------------------
21.07.2020
SQL>
什么 exec 实际上是这样的
SQL> begin --> behind the scene, EXEC encloses
2 select trunc(sysdate) into :datevar from dual; --> your statement into
3 end; --> BEGIN - END
4 /
PL/SQL procedure successfully completed.
SQL> print datevar
DATEVAR
--------------------------------
21.07.2020
SQL>
2条答案
按热度按时间xoefb8l81#
嗯,是的,它在sql层中不起作用,但在pl/sql中会起作用。在sql*中,还有
exec
你可以使用(正如你已经知道的)。它有点“取代”begin-end
让你比平时少打几个字母。因此,在您的示例中:由于是pl/sql,您需要
INTO
条款:什么
exec
实际上是这样的最后,回答你的问题:
如果不使用pl/sql,我如何让它工作?
你不能。
aor9mmx12#
问题是不能将查询结果应用于sqlplus中的变量。
也可以将它们应用于where条件下的过滤器
但如果需要动态地为变量赋值,则需要pl/sql。哪条路对