【发布时间】:2011-10-03 12:25:37
【问题描述】:
以下 PL/SQL 块有效:
DECLARE
r TABLE1%ROWTYPE;
BEGIN
SELECT * INTO r FROM TABLE1 SAMPLE(1) WHERE ROWNUM = 1;
END;
但是,当我尝试用 SAMPLE 子句中的变量替换文字时,Oracle 返回语法错误:
DECLARE
s NUMBER;
r TABLE1%ROWTYPE;
BEGIN
s := 1;
SELECT * INTO r FROM TABLE1 SAMPLE(s) WHERE ROWNUM = 1;
END;
ORA-06550: line 6, column 39:
PL/SQL: ORA-00933: SQL command not properly ended
我做错了什么?
我正在使用 Oracle 10 和 SQL Developer。
(这些是简化的示例。我在实践中实际尝试做的是优化随机行的选择,其中 SAMPLE 百分比将根据表中的当前行数动态计算。所以我不能使用文字,我需要一个变量来分配计算的结果。)
【问题讨论】: