sql—将变量插入表的列时出错

3z6pesqy  于 2021-07-24  发布在  Java
关注(0)|答案(2)|浏览(444)
CREATE OR REPLACE PROCEDURE A ()
IS 
NUMB_ID NUMBER

NUMB_ID:= 'SELECT 1 FROM DUAL'

INSERT INTO TAB1
(ID)
VALUES
(@NUMB_ID)

...
...

获取此的缺少表达式错误。请提供有关如何向表中插入变量的帮助(oracle 11g)

6l7fqoea

6l7fqoea1#

不知道你从哪里得到的语法,但它看起来根本不像oracle语法。我建议你看一些例子,网上有很多。我解决了几个问题,应该可以让你开始了。

CREATE OR REPLACE PROCEDURE a ()
IS
  -- declaration section (after the IS or AS) 
  NUMB_ID NUMBER; --need trailing semi colon after every statement
BEGIN 
-- actual code
NUMB_ID:= 1; -- unclear if you want to assign 1 or assign a value from a table.

INSERT INTO TAB1
(ID)
VALUES
(NUMB_ID); --need trailing semi colon after every statement, the @ is not oracle syntax
  ...
END a;
jecbmhm3

jecbmhm32#

你的语法全错了。您看过pl/sql引用了吗?
您将numb\u id声明为一个数字,然后尝试为其分配一个字符串。

NUMB_ID:= 'SELECT 1 FROM DUAL'

不是指定“select 1 from dual”的结果,而是实际字符串“select 1 from dual”。即使它确实分配了结果,因为您从dual中选择了一个特定的数字,您最好首先正确地执行它:
编号:=1;
另请注意,没有包含终止分号。

INSERT INTO TAB1
(ID)
VALUES
(@NUMB_ID)

使用'@'不是引用内部变量的方式。我将把它作为一个练习留给学生参考数据库pl/sql语言参考来查看正确的方法。

相关问题