我正在尝试在sqlplus中执行以下脚本,但每次都说"缺少关键字"。我的主要目标是为第2列的每个值(1到8)选择一个表的第1列的随机数到变量VNM_RAND_NUMBER。请告诉我代码有什么问题,还有其他办法让我这样做吗?
DECLARE
vvc_sql_stmt long;
VVC_NAME varchar2(10) := 'asdf';
VNM_RAND_NUMBER NUMBER;
VVC_TABLE_NAME varchar2(50);
BEGIN
VVC_TABLE_NAME := 'AK_'||VVC_NAME||'';
FOR I IN 1 .. 8
LOOP
VVC_SQL_STMT := 'SELECT COLUMN1 INTO VNM_RAND_NUMBER FROM(
SELECT * FROM '||VVC_TABLE_NAME||' WHERE column2 = '||I||'
ORDER BY DBMS_RANDOM.VALUE)
WHERE ROWNUM = 1';
EXECUTE IMMEDIATE (VVC_SQL_STMT);
COMMIT;
dbms_output.put_line(vnm_rand_number);
END LOOP;
END;
/
答案 0 :(得分:0)
发布完整的错误堆栈(ORA-xxxxx错误号,抛出错误的行等)总是有帮助的。我的猜测是你真的想要
one
one
two
two
two
three
random
当然,在执行它之前使用动态SQL来记录您要执行的语句通常是一个好主意,这样您就可以看到构造的内容。这通常会使调试变得更加容易。