数据导入有误是因为调试没办法输入值(额,或者我不知道怎么调试),改成下面就可以了,但是还是没解决我的开头的困惑。<<outer>> DECLARE v_deptno NUMBER(2); v_dname VARCHAR2(10); BEGIN <<inner>> BEGIN SELECT deptno INTO v_deptno FROM scott.emp WHERE lower(ename)=lower('scott'); END;--<<inner>> SELECT dname INTO v_dname FROM scott.dept WHERE deptno= v_deptno; dbms_output.put_line('部门名:'||v_dname); END;--<<outer>>
block label基本上就是给goto用的 就像书签就是用来翻页的例如begin <<outer>> DECLARE v_deptno NUMBER(2); v_dname VARCHAR2(10); BEGIN <<inner>> BEGIN SELECT deptno INTO v_deptno FROM scott.emp WHERE lower(ename)=lower('SMITH'); END;--<<inner>> goto lab; --跳到label <<lab>>处 SELECT dname INTO v_dname FROM scott.dept WHERE deptno= v_deptno; dbms_output.put_line('部门名:'||v_dname); END; <<lab>> null; end;
SQL窗口识别不了第一个关键字,这个是工具决定的。最好是在调试窗口去执行。
DECLARE
v_deptno NUMBER(2);
v_dname VARCHAR2(10);
BEGIN
<<inner>>
BEGIN
SELECT deptno INTO v_deptno FROM scott.emp
WHERE lower(ename)=lower('scott');
END;--<<inner>>
SELECT dname INTO v_dname FROM scott.dept
WHERE deptno= v_deptno;
dbms_output.put_line('部门名:'||v_dname);
END;--<<outer>>
SQL窗口识别不了第一个关键字,这个是工具决定的。最好是在调试窗口去执行。按照版主的解释,我是不可以理解为这个是SQL窗口模式的特殊BUG。
最外层再加一层begin end;就好了并不是Bug。pl/sql dev将你这段代码解析成3段来单独运行,因此每段都不对了
就像书签就是用来翻页的例如begin
<<outer>>
DECLARE
v_deptno NUMBER(2);
v_dname VARCHAR2(10);
BEGIN
<<inner>>
BEGIN
SELECT deptno INTO v_deptno FROM scott.emp
WHERE lower(ename)=lower('SMITH');
END;--<<inner>>
goto lab; --跳到label <<lab>>处
SELECT dname INTO v_dname FROM scott.dept
WHERE deptno= v_deptno;
dbms_output.put_line('部门名:'||v_dname);
END;
<<lab>>
null;
end;