⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 nestedtable_dml1.sql

📁 介绍Oracle PL SQL编程
💻 SQL
字号:
/* * nestedtable_dml1.sql * Chapter 6, Oracle10g PL/SQL Programming * by Ron Hardman, Michael McLaughlin and Scott Urman * * This script demonstrates using a stored function to resolve the * one-to-many relation of a nested table in a row of data. */SET ECHO ONSET SERVEROUTPUT ON SIZE 1000000-- Clean up environment.BEGIN  FOR i IN (SELECT   null            FROM     addresses            WHERE    address_id = 21) LOOP    EXECUTE IMMEDIATE 'DELETE FROM addresses WHERE address_id = 21';  END LOOP;  FOR i IN (SELECT   null            FROM     individuals            WHERE    individual_id = 21) LOOP    EXECUTE IMMEDIATE 'DELETE FROM individuals WHERE individual_id = 21';  END LOOP;  COMMIT;END;/-- Insert into individual because of mandatory parent key constraint.INSERTINTO     individualsVALUES('21','John','','McCain');-- Insert into address using the varray structure.INSERTINTO     addressesVALUES(21,21,address_table  ('Office of Senator McCain'  ,'450 West Paseo Redondo'  ,'Suite 200'),'Tucson','AZ','85701','USA');-- Use an ordinary select statement.SELECT   street_addressFROM     addresses;-- Use SQL*Plus to format the output.COL column_value FORMAT A30-- Print a list of the varray elements.SELECT   column_valueFROM     THE (SELECT   street_address              FROM     addresses              WHERE    address_id = 21);-- Use SQL*Plus to format the output.COL data FORMAT A30-- Print a list of the joined elements.SELECT   s.dataFROM    (SELECT   1 ordering         ,        rownum roworder         ,        individual_id         ,        first_name         ||       ' '         ||       middle_initial         ||       ' '         ||       last_name data         FROM     individuals i2         UNION ALL         SELECT   2 ordering         ,        rownum roworder         ,        individual_id         ,        column_value data         FROM     THE (SELECT   street_address                       FROM     addresses)         ,        addresses         UNION ALL         SELECT   3 ordering         ,        rownum roworder         ,        individual_id         ,        city         ||       ', '         ||       state         ||       ' '         ||       postal_code data         FROM     addresses a         ORDER BY 1,2) s,        individuals iWHERE    s.individual_id = i.individual_idAND      i.individual_id = 21;-- Created ...CREATE OR REPLACE FUNCTION many_to_one  (street_address_in ADDRESS_TABLE)RETURN VARCHAR2 IS  -- Define a return variable and initial it as a zero length string.  retval VARCHAR2(4000) := '';BEGIN  FOR i IN 1..street_address_in.COUNT LOOP    retval := retval || street_address_in(i) || CHR(10);  END LOOP;  RETURN retval;END many_to_one;/ SELECT   i.first_name || ' '||       i.middle_initial || ' '||       i.last_name || CHR(10)||       many_to_one(a.street_address)||       city || ', '||       state || ' '||       postal_code address_labelFROM     addresses a,        individuals iWHERE    a.individual_id = i.individual_idAND      i.individual_id = 21;

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -