DECLARE v_weight NUMBER(3) := 100; v_message VARCHAR2(255) := 'Outer Value'; BEGIN
DECLARE
v_weight NUMBER(3) := 1;
v_message VARCHAR2(255) :='Inner value'; BEGIN
v_weight := v_weight + 1; v_message := 'Put'|| v_message;
DBMS_OUTPUT.PUT_LINE('inner block ' || to_char(v_weight) ||
v_message);
END;
v_weight := v_weight + 1;
v_message := 'Put' || v_message;
DBMS_OUTPUT.PUT_LINE('outter block ' || to_char(v_weight) || v_message); END;
运行结果为:
4.3.使用%type和%rowtype变量
1.使用%type变量
阅读以下程序,理解其功能,给出运行结果。 (1)DROP TABLE EMPL;
create table EMPL (
EMPLOYEE_ID NUMBER(5) not null,
第 6 页 共 31 页
LAST_NAME VARCHAR2(20) not null, HIRE_DATE DATE,
SALARY NUMBER(8,2), JOB_ID NUMBER(5), DEPARTMENT_ID NUMBER(5) );
set serveroutput on;
declare
v_last_name emp.last_name%TYPE; v_hire_date emp.hire_date%TYPE; v_balance number(6,2) ; v_min_balance v_balance%type; begin
dbms_output.put_line('定义%type类型的变量'); end; /
运行结果为:
(2)declare
v_deptno dept.deptno%type; v_loc dept.loc%type;
第 7 页 共 31 页
begin
select deptno,loc
into v_deptno,v_loc from dept
where dname='SALES';
DBMS_OUTPUT.PUT_LINE (V_deptno ||' and '||v_loc); end; /
运行结果为:
2.使用%Rowtype变量
阅读以下程序,理解其功能,给出运行结果。
(1) DROP TABLE EMPL;
create table EMPL (
EMPLOYEE_ID NUMBER(5) not null, LAST_NAME VARCHAR2(20) not null, HIRE_DATE DATE,
SALARY NUMBER(8,2), JOB_ID NUMBER(5), DEPARTMENT_ID NUMBER(5) );
set serveroutput on;
-- PL/SQL变量之%ROWTYPE类型 declare
v_empl emp%rowtype; begin
dbms_output.put_line('定义%rowtype类型的变量');
第 8 页 共 31 页
end; /
运行结果为:
(2) drop table stock;
create table stock (
symbol varchar2(50), price number(6,2) );
insert into stock values('IBM',188.88);
insert into stock values('ORCL',100.88);
DECLARE
stock_info1 stock%ROWTYPE; stock_info2 stock%ROWTYPE; stock_info3 stock%ROWTYPE;
第 9 页 共 31 页
BEGIN
--对应纪录直接取得相应字段的:Populate the specific fields in a record SELECT symbol,price
INTO stock_info1.symbol,stock_info1.price FROM stock
WHERE symbol ='ORCL';
--对应纪录直接 放入纪录中
SELECT * INTO stock_info2 FROM stock WHERE symbol ='ORCL';
stock_info3 := stock_info2; --记录间可以相互赋值
stock_info3.symbol:='ORACLE'; --对纪录的各字段赋值。
DBMS_OUTPUT.PUT_LINE('stock_info1 :' || stock_info1.symbol || '
'||stock_info1.price);
DBMS_OUTPUT.PUT_LINE('stock_info2 :' || stock_info2.symbol || '
'||stock_info2.price);
DBMS_OUTPUT.PUT_LINE('stock_info3 :' || stock_info3.symbol || '
'||stock_info3.price);
END;
运行结果为:
思考:
如下所示:改变表结构。
drop table stock; create table stock (
symbol varchar2(50), price number(6,2), owner varchar2(10) );
第 10 页 共 31 页
百度搜索“77cn”或“免费范文网”即可找到本站免费阅读全部范文。收藏本站方便下次阅读,免费范文网,提供经典小说综合文库实验4 SQL_PL编程基础_V2013(2)在线全文阅读。
相关推荐: