谁能告诉我以下PL / SQL块有什么问题?

时间:2015-07-23 17:23:33

标签: sql plsql

我正在尝试在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;
/

1 个答案:

答案 0 :(得分:0)

发布完整的错误堆栈(ORA-xxxxx错误号,抛出错误的行等)总是有帮助的。我的猜测是你真的想要

one
one
two
two
two
three
random

当然,在执行它之前使用动态SQL来记录您要执行的语句通常是一个好主意,这样您就可以看到构造的内容。这通常会使调试变得更加容易。