【发布时间】:2012-06-06 18:47:10
【问题描述】:
谁能帮我理解为什么我可以在包中声明一个硬编码的日期值,但不能从查询中分配值?我已经看到了许多显示硬编码值声明的示例(包括参考书),但我无法找到通过查询将值分配给变量的示例。
这是允许的:
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;
【问题讨论】:
标签: sql oracle variables plsql oracle11g