我想编写以个PL/SQL的function,用来返回一个临时表,如下:
create or replace function linshib(zzwl Varchar2) Return is --提示这里有错误 t_Level TABLE(zzwl Varchar2,Level Number) begin --提示这里也有错误
DECLARE Level Number
SET Level=-1
INSERT t_Level SELECT zzwl,Level
WHILE @@ROWCOUNT>0
BEGIN
SET Level=Level+1
INSERT t_Level SELECT a.wldm,Level
FROM tbbb a,t_Level b
WHERE a.zzwl=b.zzwl
AND b.Level=Level-1
End;
Return;
End;
end linshib; 提示的错误信息为:
Compilation errors for FUNCTION SYSTEM.LINSHIBError: PLS-00103: 出现符号 "IS"在需要下列之一时:
<an identifier>
<a double-quoted delimited-identifier> SELF_ LONG_ double ref
char time timestamp interval date binary national character
nchar
符号 "<an identifier>" 被替换为 "IS" 后继续。
Line: 5
Text: Return isError: PLS-00103: 出现符号 "BEGIN"在需要下列之一时:
;
Line: 10
Text: begin我以前使用sql 2000这个function也是从sql 2000中改了改,但是还有有错误,那位高手帮帮小弟,感激不尽。
create or replace function linshib(zzwl Varchar2) Return is --提示这里有错误 t_Level TABLE(zzwl Varchar2,Level Number) begin --提示这里也有错误
DECLARE Level Number
SET Level=-1
INSERT t_Level SELECT zzwl,Level
WHILE @@ROWCOUNT>0
BEGIN
SET Level=Level+1
INSERT t_Level SELECT a.wldm,Level
FROM tbbb a,t_Level b
WHERE a.zzwl=b.zzwl
AND b.Level=Level-1
End;
Return;
End;
end linshib; 提示的错误信息为:
Compilation errors for FUNCTION SYSTEM.LINSHIBError: PLS-00103: 出现符号 "IS"在需要下列之一时:
<an identifier>
<a double-quoted delimited-identifier> SELF_ LONG_ double ref
char time timestamp interval date binary national character
nchar
符号 "<an identifier>" 被替换为 "IS" 后继续。
Line: 5
Text: Return isError: PLS-00103: 出现符号 "BEGIN"在需要下列之一时:
;
Line: 10
Text: begin我以前使用sql 2000这个function也是从sql 2000中改了改,但是还有有错误,那位高手帮帮小弟,感激不尽。
如果只创建表,要使用过程,function是要有返回值的。所以,return后面,必须要有返回的类型varchar2,number等。
创建表要有显性的create table过程,并且,用execute immediate执行。oracle中赋值 Level :=-1 ;并以分号结尾。