Oracle PL-SQL序列

时间:2012-10-18 22:25:41

标签: plsql

美好的一天,

我试图在我的查询中使用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,

COSON

4 个答案:

答案 0 :(得分: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;

答案 1 :(得分:0)

保险已经开始了?

更改此

SELECT submission_seq.currval INTO nextvalue FROM DUAL;

这个

SELECT submission_seq.nextval INTO nextvalue FROM DUAL;

答案 2 :(得分:0)

如果您使用的是Oracle 11g,那么您不必再从双重中进行选择。下面的代码片段可以使用。

/* 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;

答案 3 :(得分: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;