0

再会,

我正在尝试在查询中使用 pl/sql 变量(我是 sql server 人员),这是我的代码:

DECLARE
    nextvalue     integer;
BEGIN

    SELECT submission_seq.currval INTO nextvalue FROM DUAL;

    dbms_output.put_line('test');    
    dbms_output.put_line(nextvalue);

    /* ERROR OCCURS HERE */
    SELECT nextvalue, id FROM TABLE_STATUS;

END;

我收到了 PLS-00428:在这个 SELECT 语句中应该有一个 INTO 子句。

我不明白为什么我会得到这个,因为我用一个来填充包含我想要的内容的 nextvalue。

谁能帮我?

TIA,

科森

4

4 回答 4

1

这是因为,正如消息所述,select 语句期望您将结果分配给变量。

尝试:

DECLARE
    nextvalue     integer;
    result        table_status%type;
BEGIN

    SELECT submission_seq.nextval INTO nextvalue FROM DUAL;

    dbms_output.put_line('test');    
    dbms_output.put_line(nextvalue);


    SELECT id INTO result FROM TABLE_STATUS;

END;
于 2012-10-18T22:32:28.363 回答
0

The secuence has started?

Change this

SELECT submission_seq.currval INTO nextvalue FROM DUAL;

for this

SELECT submission_seq.nextval INTO nextvalue FROM DUAL;
于 2012-10-18T22:36:21.203 回答
0

尝试这个:

DECLARE
    nextvalue     integer;
BEGIN
nextvalue := submission_seq.currval;

dbms_output.put_line('test');    
dbms_output.put_line(nextvalue);

SELECT nextvalue, id FROM TABLE_STATUS;

END;
于 2013-01-26T10:50:08.097 回答
0

如果您使用的是 Oracle 11g,那么您不必再从 dual 中进行选择。下面的代码片段将起作用。

/* Formatted on 1/25/2013 4:35:00 PM */
DECLARE
   nextvalue      NUMBER := submission_seq.currval;
BEGIN
   DBMS_OUTPUT.put_line ('test');
   DBMS_OUTPUT.put_line (nextvalue);
END;
于 2013-01-25T22:54:22.353 回答