使用匿名块内的变量更改SQL序列无效

我正在尝试更改声明语句内部的序列的最大值。在声明内部,我正在查询一个表以获取计数,以使该计数成为序列的最大值。更一般而言,我试图将maxvalue设置为表中的行数。

CREATE SEQUENCE counter
START WITH 1
INCREMENT BY 1
MINVALUE 1 
MAXVALUE 5
CYCLE 
CACHE 4; 

DeclARE
      new_max NUMber(2);
BEGIN
      SELECT count(*) INTO new_max 
      FROM Sim_Price;

      execute immediate 'ALTER SEQUENCE counter
              MAXVALUE new_max';
END; 
/

我收到错误消息,说new_max是无效数字。我不确定如何使最大值与表的计数相同,如果我从表中获得该值时无法将其识别为数字。如果我只是直接输入一个数字(例如6)而不是new_max,则效果很好。它只是无法识别变量。我正在使用SQLPLUS。

xiaoweiaosnao 回答:使用匿名块内的变量更改SQL序列无效

您对变量new_max的处理导致将其解释为'new_max'的字符串。您需要在用于EXECUTE IMMEDIATE的字符串中将new_max的内容显示为一个值。

execute immediate 'ALTER SEQUENCE counter maxvalue ' || TO_CHAR(new_max);
本文链接:https://www.f2er.com/3027315.html

大家都在问