简单选择给了我:PLS-00428:需要一个 INTO 子句[重复]

Posted

技术标签:

【中文标题】简单选择给了我:PLS-00428:需要一个 INTO 子句[重复]【英文标题】:Simple Select Gives me: PLS-00428: an INTO clause is expected [duplicate] 【发布时间】:2015-07-14 19:05:09 【问题描述】:

正如您在下面看到的,这是一个非常简单的选择语句。它不在存储过程中,我最近添加了变量 START_DT 和 END_DT 以便我可以更动态地使用它。我收到以下错误:

ORA-06550:第 8 行,第 1 列:PLS-00428:INTO 子句应在 这个 SELECT 语句 06550. 00000 - “第 %s 行,第 %s 列:\n%s”

我看了一遍,发现的大部分问题都与存储过程有关,所以如果这是重复的,我深表歉意。我对 PL/SQL 还很陌生,但我使用 SQL Server 已经 7 年多了,所以我想这是一个语法问题。下面是我的代码

DECLARE 
 START_DT DATE;
 END_DT DATE;
BEGIN

START_DT := TO_DATE('2015-06-01');
END_DT := TO_DATE('2015-06-30');

select TRUNC(txns.txn_gl_post_dt) DATED,
       acc.acc_nbr ACCT,
       ACC.ACC_POO_POOL POOL,
       txns.txn_amt CHGOFF_AMT
FROM   ACCOUNTS ACC
JOIN TXNS TXNS 
ON TXNS.TXN_AAD_ID = ACC.ACC_AAD_ID 
AND TXNS.TXN_TCD_CODE = 'ADV_CHGOFF'
WHERE ACC.ACC_STATUS_CD in ('CHGOFF','ACTIVE')
AND   TRUNC(TXNS.TXN_GL_POST_DT) BETWEEN START_DT AND END_DT

order by 1;

END;

我怀疑这是我处理变量的方式,有什么想法吗?

【问题讨论】:

PL/SQL 是 PL/SQL,无论您是使用它来定义存储过程还是使用匿名 PL/SQL 块。存储过程中有关此错误的每个答案都适用于您的问题。 【参考方案1】:

PL/SQL 块不能只运行查询。这些值需要被插入到某个地方——另一个表中、变量中、某种编码字符串中。

因此,你不能轻易做你想做的事。

【讨论】:

以上是关于简单选择给了我:PLS-00428:需要一个 INTO 子句[重复]的主要内容,如果未能解决你的问题,请参考以下文章

过程中的Oracle选择查询错误[重复]

在 for 循环中选择语句

oracle regexp_like 与 select 模式

雄辩的选择语句给了我一个错误

$save 给了我 TypeError: undefined is not a function when save model that is a list in angular

在 SELECT 语句中使用声明的变量