Sql 简单选择给我:PLS-00428:需要一个INTO子句

Sql 简单选择给我:PLS-00428:需要一个INTO子句,sql,oracle,plsql,Sql,Oracle,Plsql,正如您在下面看到的,这是一个非常简单的select语句。它不在存储过程中,我最近添加了变量START_DT和END_DT,以便更动态地使用它。我得到以下错误: ORA-06550:第8行第1列:PLS-00428:预计在 这是SELECT语句 655000000-“行%s,列%s:\n%s” 我看了所有的地方,发现的大多数问题都与存储过程有关,所以如果这是重复的,我很抱歉。我对PL/SQL相当陌生,但我已经使用SQLServer超过7年了,所以我认为这是一个语法问题。下面是我的代码 DECLAR

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

ORA-06550:第8行第1列:PLS-00428:预计在 这是SELECT语句 655000000-“行%s,列%s:\n%s”

我看了所有的地方,发现的大多数问题都与存储过程有关,所以如果这是重复的,我很抱歉。我对PL/SQL相当陌生,但我已经使用SQLServer超过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,无论您是使用它来定义存储过程还是使用匿名PL/SQL块。存储过程中关于此错误的每个答案都适用于您的问题。