Ega*_*ian 2 oracle plsql oracle10g ora-00905
我在名为Files的表中有一个名为FileSize的LONG列.
为实现这一目标,我做了以下工作:
我写了这个PL/SQL脚本来查找大小
declare
long_var LONG:=0;
begin
dbms_output.put_line(length(long_var));
execute immediate 'SELECT FILESIZE INTO long_var FROM FILES';
dbms_output.put_line(length(long_var));
end;
Run Code Online (Sandbox Code Playgroud)
但它抛出一个错误:
ORA-00905: missing keyword
ORA-06512: at line 5
Run Code Online (Sandbox Code Playgroud)
当我看到下面给出的链接时,我正在做以下操作:http: //www.techonthenet.com/oracle/questions/long_length.php
有人可以建议我做错了,因为我无法确定我所缺少的关键词
谢谢.
小智 6
在此上下文中,您不需要EXECUTE IMMEDIATE.
DECLARE
long_var long:=0;
BEGIN
DBMS_OUTPUT.PUT_LINE(LENGTH(long_var));
SELECT filesize INTO long_var FROM files;
DBMS_OUTPUT.PUT_LINE(LENGTH(long_var));
END;
/
Run Code Online (Sandbox Code Playgroud)
EXECUTE IMMEDIATE从PL/SQL代码运行独立的SQL语句.它不能向您的代码返回任何内容.您使用的语句不是有效的SQL,因此您获得了ORA-00905.它是有效的PL/SQL代码,因此一旦删除了EXECUTE IMMEDIATE就可以正常工作.
编辑
您的后续问题的代码:要使用多行执行此操作,您可以使用此代码
DECLARE
CURSOR C1 IS
SELECT filesize FROM files;
BEGIN
FOR files IN c1
LOOP
DBMS_OUTPUT.PUT_LINE(LENGTH(files.filesize));
END LOOP;
END;
/
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
9103 次 |
| 最近记录: |