oracle 命名块

zeliu 2010-10-18 11:31:08
<<outer>>
declare
v_deptno number(2);
v_dname varchar2(10);
begin
begin
select deptno into v_deptno from emp
where lower(ename)=lower('&name');
end;--<<inner>>--
select dname into v_dname from dept
where deptno=v_deptno;
dbms_output.put_line('deptno:' ||v_dname);
end; -- <<outer>>

无法加入标记
...全文
182 12 打赏 收藏 转发到动态 举报
写回复
用AI写文章
12 条回复
切换为时间正序
请发表友善的回复…
发表回复
shuaiaiting1 2011-04-15
  • 打赏
  • 举报
回复
学习了··
declare
begin
<<outer>>
declare
StuClass varchar2(20);
TeaName varchar2(20);
begin
<<inner>>
begin
select Stu_class into StuCLass from student where Stu_id= &Stuid;
end;
select Tname into TeaName from StuClass where Cl_name=StuCLass;
dbms_output.put_line('老师姓名:'||TeaName);
end;
end;
少了开头的俩
declare
begin

end;
所以总是出不来~
gelyon 2010-10-18
  • 打赏
  • 举报
回复

<<outer>>
declare
v_deptno number(2);
v_dname varchar2(10);
begin
<<inner>> --你是想在这里写内部命名块吧
begin
select deptno into v_deptno from emp
where lower(ename)=lower('&name');
end;
--<<inner>>
select dname into v_dname from dept
where deptno=v_deptno;
dbms_output.put_line('deptno:' ||v_dname);
end;
--<<outer>>
ngx20080110 2010-10-18
  • 打赏
  • 举报
回复
給個例子

BEGIN
<<outer_loop>>
FOR i IN 1..3 LOOP -- assign the values 1,2,3 to i
<<inner_loop>>
FOR i IN 1..3 LOOP
IF outer_loop.i = 2 THEN
DBMS_OUTPUT.PUT_LINE( 'outer: ' || TO_CHAR(outer_loop.i) || ' inner: '
|| TO_CHAR(inner_loop.i));
END IF;
END LOOP inner_loop;
END LOOP outer_loop;
END;
心中的彩虹 2010-10-18
  • 打赏
  • 举报
回复
[Quote=引用 6 楼 zeliu 的回复:]
再问一下 plsql 调用存储过程是用execute 老是执行不了
[/Quote]
sql窗口
begin
exec p1(传参值);
end;

命令窗口
exec p1
zeliu 2010-10-18
  • 打赏
  • 举报
回复
再问一下 plsql 调用存储过程是用execute 老是执行不了
心中的彩虹 2010-10-18
  • 打赏
  • 举报
回复

--你的
declare
<<outer>>
declare
v_deptno number(2);
v_dname varchar2(10);
begin
begin
select deptno into v_deptno from emp
where lower(ename)=lower('&name');
end;
<<inner>>
select dname into v_dname from dept
where deptno=v_deptno;
dbms_output.put_line('deptno:' ||v_dname);
end;
end;





心中的彩虹 2010-10-18
  • 打赏
  • 举报
回复
[Quote=引用楼主 zeliu 的回复:]
<<outer>>
declare
v_deptno number(2);
v_dname varchar2(10);
begin
begin
select deptno into v_deptno from emp
where lower(ename)=lower('&name');
end;--<<inner>>--
select dname ……
[/Quote]


--刚写的 你自己对照下
SQL> edi
已写入 file afiedt.buf

1 declare
2 begin
3 <<outer>>
4 declare
5 v_deptno number;
6 v_dname varchar2(10);
7 begin
8 begin
9 select empno into v_deptno from emp
10 where lower(empname)=lower(&name);
11 end;
12 <<inner>>
13 dbms_output.put_line('deptno:' ||v_deptno);
14 end;
15* end;

SQL> /
输入 name 的值: 'wkc168'
原值 10: where lower(empname)=lower(&name);
新值 10: where lower(empname)=lower('wkc168');
deptno:168

PL/SQL 过程已成功完成。



zeliu 2010-10-18
  • 打赏
  • 举报
回复
标记已经加了,就是<<outer>> <<inner>>
gelyon 2010-10-18
  • 打赏
  • 举报
回复
你是哪里无法加入标记啊?
ngx20080110 2010-10-18
  • 打赏
  • 举报
回复
你的問題是?
minitoy 2010-10-18
  • 打赏
  • 举报
回复
什么叫命名块?
<<标识符>>
这是goto使用的标号.
心中的彩虹 2010-10-18
  • 打赏
  • 举报
回复
[Quote=引用 7 楼 wkc168 的回复:]
引用 6 楼 zeliu 的回复:
再问一下 plsql 调用存储过程是用execute 老是执行不了

sql窗口
begin
exec p1(传参值);
end;

命令窗口
exec p1
[/Quote]



--sql窗口
begin
p1(传参值);
end;

--命令窗口
exec p1





3,490

社区成员

发帖
与我相关
我的任务
社区描述
Oracle 高级技术相关讨论专区
社区管理员
  • 高级技术社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧