有人可以帮我理解为什么我可以在包中声明硬编码的日期值但不能从查询中分配值吗?我已经看到了许多显示硬编码值声明的示例(包括参考书),但我无法找到通过查询将值分配给变量的示例。
这是允许的:
create or replace package body PACKAGE_NAME AS
tDate DATE := '2012-05-30';
-- ...procedures follow
这是允许的:
create or replace package body PACKAGE_NAME AS
tDate DATE := sysdate;
这是不允许的:
create or replace package body PACKAGE_NAME AS
tDate DATE := select MAX(date_) from Table_Name;
我已经尝试了多种方法,但我可以接受它不起作用 - 我可以根据需要在程序本身中使用它。但我想知道为什么我不能用tDate
这种方式赋值?具体错误是:
期待...时遇到符号'SELECT'。
添加我可以通过存储过程中的查询获得分配的变量值,但相同的过程似乎不适用于包体。
PROCEDURE Proc_Name IS
tDate Date;
BEGIN
SELECT MAX(date_) into tDate from Table_Name;