25-1:
DECLARE
   obj ORDSYS.ORDAudio;
BEGIN
   SELECT product_audio INTO obj FROM pm.online_media
   WHERE product_id=3117  FOR UPDATE;
   obj.clearLocal();
   UPDATE pm.online_media SET product_audio=obj
   WHERE product_id=3117;
   COMMIT;
END;
/

25-2:
DECLARE
   obj ORDSYS.ORDAudio;
   res INTEGER;
   ctx RAW(64) :=NULL;
BEGIN
   SELECT product_audio INTO obj FROM pm.online_media
   WHERE product_id=3117;
   res := obj.closeSource(ctx);
   IF res=0 THEN
     dbms_output.put_line('Դرճɹ');
   ELSE
     dbms_output.put_line('Դرʧ');
   END IF;
END;
/

25-3:
DECLARE
	image ORDSYS.ORDImage;
BEGIN
	SELECT product_photo INTO image FROM pm.online_media 
	WHERE product_id = 3117 FOR UPDATE;
	image.deleteContent();
	COMMIT;
END;
/

25-4:
conn / as sysdba
CREATE OR REPLACE DIRECTORY image_dir
AS 'D:\MEDIA\IMAGE';
GRANT READ,WRITE ON DIRECTORY image_dir TO pm;
conn pm/pm
DECLARE
   obj ORDSYS.ORDImage;
   ctx RAW(64) :=NULL;
BEGIN
   SELECT product_photo INTO obj FROM pm.online_media
   WHERE product_id = 3106;
   obj.export(ctx,'file','IMAGE_DIR','3106.jpg');
END;
/

25-5:
DECLARE
	obj ORDSYS.ORDVideo;
	videobfile BFILE;
BEGIN
	SELECT product_video INTO obj FROM pm.online_media
	WHERE product_id = 3106;
	videobfile := obj.getBFile();
END;
/

25-6:
DECLARE
   obj ORDSYS.ORDVideo;
   ctx RAW(64) := NULL;
BEGIN
   SELECT product_video INTO obj FROM pm.online_media
   WHERE product_id = 3106;
   DBMS_OUTPUT.PUT_LINE('Ƶ:'||DBMS_LOB.GETLENGTH(obj.getContent()));
END;
/

25-7:
DECLARE
	image ORDSYS.ORDImage;
BEGIN
	SELECT p.product_photo INTO image FROM pm.online_media p
	WHERE product_id = 3106;
	DBMS_OUTPUT.PUT_LINE('MIMEͣ'||image.getMimeType());
END;
/

25-8:
DECLARE
	image ORDSYS.ORDImage;
BEGIN
	SELECT p.product_photo INTO image FROM pm.online_media p
	WHERE p.product_id = 3106;
	DBMS_OUTPUT.PUT_LINE(image.getSource());
END;
/

25-9:
DECLARE
	image ORDSYS.ORDImage;
BEGIN
	SELECT p.product_photo INTO image FROM pm.online_media p
	WHERE p.product_id = 1743;
	DBMS_OUTPUT.PUT_LINE('Ŀ¼' || image.getSourceLocation());
END;
/

25-10:
DECLARE
	image ORDSYS.ORDImage;
BEGIN
	SELECT p.product_photo INTO image FROM pm.online_media p
	WHERE p.product_id = 1743;
	DBMS_OUTPUT.PUT_LINE('Դ:' ||image.getSourceName());
	COMMIT;
END;
/

25-11:
DECLARE
   obj ORDSYS.ORDImage;
BEGIN
   SELECT p.product_photo INTO obj FROM pm.online_media p
   WHERE p.product_id= 3106;
   DBMS_OUTPUT.PUT_LINE('Դ:'||obj.getSourceType());
END;
/

25-12:
DECLARE
	obj ORDSYS.ORDAudio;
BEGIN
	SELECT p.product_audio INTO obj FROM pm.online_media p
	WHERE p.product_id  = 3106;
	DBMS_OUTPUT.PUT_LINE('ʱ:'||
  	  TO_CHAR(obj.getUpdateTime(),'MM-DD-YYYY HH24:MI:SS'));
END;
/

25-13:
DECLARE
	obj ORDSYS.ORDAudio;
BEGIN
	SELECT p.product_audio INTO obj FROM pm.online_media p
	WHERE p.product_id = 3106;
	IF (obj.isLocal() = TRUE) THEN  
	  DBMS_OUTPUT.PUT_LINE('ݴ洢BLOB');
	ELSE
	  DBMS_OUTPUT.PUT_LINE('ݴ洢ⲿԴ');
	END IF;
END;
/

25-14:
DECLARE
	obj ORDSYS.ORDAudio;
	res INTEGER;
	ctx RAW(64) :=NULL;
	userArg RAW(64);
BEGIN
	SELECT p.product_audio INTO obj FROM pm.online_media p
	WHERE p.product_id = 1743;
	res := obj.openSource(userArg, ctx);
	COMMIT;
END;
/

25-15:
DECLARE
	obj ORDSYS.ORDAudio;
	buffer RAW(4000);
	ctx RAW(64) :=NULL;
	i INT;
BEGIN
	SELECT p.product_audio into obj from pm.online_media p
	WHERE p.product_id = 3106;
	i:=100;
	obj.readFromSource(ctx,1,i,buffer);
	DBMS_OUTPUT.PUT_LINE('Ƶݳ:'||
	  TO_CHAR(obj.getContentLength(ctx)));
END;
/

25-16:
DECLARE
	obj ORDSYS.ORDAudio;
BEGIN
	SELECT product_audio INTO obj FROM online_media 
	WHERE product_id = 3117;
	obj.setLocal;
	UPDATE online_media SET product_audio = obj 
	WHERE product_id = 3117;
	COMMIT;
END;
/

25-17:
DECLARE
	obj ORDSYS.ORDAudio;
BEGIN
	SELECT p.product_audio INTO obj FROM pm.online_media p
	WHERE p.product_id = 3117 FOR UPDATE;
	DBMS_OUTPUT.PUT_LINE('ԭMIME'||obj.getMimeType());
	obj.setMimeType('audio/basic');
	DBMS_OUTPUT.PUT_LINE('MIME'||obj.getMimeType());
	UPDATE pm.online_media p SET p.product_audio = obj 
	WHERE p.product_id = 3117;
	COMMIT;
END;
/

25-18:
CREATE OR REPLACE DIRECTORY audio_dir
AS 'D:\MEDIA\AUDIO';
GRANT READ,WRITE ON DIRECTORY audio_dir TO pm;
DECLARE
	obj ORDSYS.ORDAudio;
BEGIN
	SELECT p.product_audio INTO obj FROM pm.online_media p
	WHERE p.product_id = 3106 FOR UPDATE;
	obj.setSource('file','AUDIO_DIR','shuizhonghua.mp3');
	DBMS_OUTPUT.PUT_LINE(obj.getSource());
	UPDATE pm.online_media p SET p.product_audio = obj 
	WHERE p.product_id = 3106;
	COMMIT;
END;
/

25-19:
DECLARE
	obj ORDSYS.ORDAudio;
BEGIN
	SELECT p.product_audio INTO obj FROM pm.online_media p
	WHERE p.product_id = 3106 FOR UPDATE;
	DBMS_OUTPUT.PUT_LINE('ǰʱ:'||
	  obj.getUpdateTime());
	obj.setUpdateTime(SYSDATE);
	DBMS_OUTPUT.PUT_LINE('ºʱ:'||
	  obj.getUpdateTime());
	UPDATE pm.online_media p SET p.product_audio = obj 
	WHERE p.product_id = 3106;
	COMMIT;
END;
/

25-20:
DECLARE
	obj ORDSYS.ORDAudio;
	res INTEGER;
	ctx RAW(64) :=NULL;
BEGIN
	SELECT p.product_audio INTO obj FROM pm.online_media p
	WHERE p.product_id = 3106 FOR UPDATE;
	res := obj.trimSource(ctx,0);
	UPDATE pm.online_media p SET p.product_audio = obj 
	WHERE p.product_id = 3106;
	COMMIT;
EXCEPTION
WHEN ORDSYS.ORDSourceExceptions.METHOD_NOT_SUPPORTED THEN
  DBMS_OUTPUT.PUT_LINE('METHOD_NOT_SUPPORTED');
WHEN ORDSYS.ORDSourceExceptions.INCOMPLETE_SOURCE_INFORMATION THEN
  DBMS_OUTPUT.PUT_LINE('INCOMPLETE_SOURCE_INFORMATION');
WHEN OTHERS THEN
  DBMS_OUTPUT.PUT_LINE('');
END;
/

25-21:
DECLARE
	obj ORDSYS.ORDAudio;
	n INTEGER := 6;
	ctx RAW(64) :=NULL;
BEGIN
	SELECT p.product_audio INTO obj FROM pm.online_media p
	WHERE p.product_id = 3117 FOR UPDATE;
	obj.writeToSource(ctx,1,n,UTL_RAW.CAST_TO_RAW('helloP'));
	UPDATE pm.online_media p SET p.product_audio = obj
	WHERE p.product_id = 3117;
	DBMS_OUTPUT.PUT_LINE(':' || 
	  TO_CHAR(obj.getContentLength(ctx)));
	ROLLBACK;
END;
/

25-22:
BEGIN
	INSERT INTO pm.online_media (product_id, product_audio)
	VALUES (1729, ORDSYS.ORDAudio.init());
	COMMIT;
END;
/

25-23:
BEGIN
	UPDATE pm.online_media SET product_audio=
	ORDSYS.ORDAudio.init('FILE', 'AUDIO_DIR','DANGJIANRUMENG.MP3')
	WHERE product_id=1729;
	COMMIT;
END;
/

25-24:
DECLARE
	obj ORDSYS.ORDAudio;
	ctx RAW(64) :=NULL;
BEGIN
	SELECT p.product_audio INTO obj FROM pm.online_media p 
	WHERE p.product_id  = 1729;
	IF ( obj.checkProperties(ctx) =  TRUE ) THEN 
	  DBMS_OUTPUT.PUT_LINE('true');
	ELSE
	  DBMS_OUTPUT.PUT_LINE('false');
	END IF;
END;
/

25-25:
DECLARE
	obj ORDSYS.ORDAudio;
	tempLob   CLOB;
	ctx RAW(64) :=NULL;
BEGIN
	SELECT p.product_audio INTO obj FROM pm.online_media p 
	WHERE p.product_id  = 1729;
	DBMS_LOB.CREATETEMPORARY(tempLob, FALSE, DBMS_LOB.CALL);
	obj.getAllAttributes(ctx,tempLob);
	DBMS_OUTPUT.PUT_LINE(DBMS_LOB.substr(tempLob,
	 DBMS_LOB.getLength(tempLob),1));
END;
/

25-26:
DECLARE
	obj ORDSYS.ORDAudio;
	res VARCHAR2(4000);
	ctx RAW(64) :=NULL;
BEGIN
	SELECT p.product_audio INTO obj FROM pm.online_media p
	WHERE p.product_id  = 1729;
	res := obj.getAttribute(ctx,'sample_size');
	DBMS_OUTPUT.PUT_LINE('ߴ:'||res);
EXCEPTION
WHEN ORDSYS.ORDAudioExceptions.AUDIO_PLUGIN_EXCEPTION THEN
  DBMS_OUTPUT.PUT_LINE('AUDIO PLUGIN EXCEPTION caught');
WHEN OTHERS THEN
  DBMS_OUTPUT.PUT_LINE('EXCEPTION caught');
END;
/

25-27:
DECLARE
   obj ORDSYS.ORDAudio;
BEGIN
   SELECT p.product_audio INTO obj FROM pm.online_media p
   WHERE p.product_id  = 1729;
   DBMS_OUTPUT.PUT_LINE('ݳʱ:'||obj.getAudioDuration());
   DBMS_OUTPUT.PUT_LINE('ݸʽ:'|| obj.getFormat());
   DBMS_OUTPUT.PUT_LINE(':'|| obj.getNumberOfChannels());
END;
/

25-28:
DECLARE
	obj ORDSYS.ORDAudio;
	tempBLob BLOB;
	mimeType VARCHAR2(4000);
	format VARCHAR2(31);
	ctx RAW(64) :=NULL;
BEGIN
	SELECT p.product_audio INTO obj FROM pm.online_media p
	WHERE p.product_id  = 1729;
	DBMS_LOB.CREATETEMPORARY(tempBLob, true, 10);
	obj.getContentInLob(ctx,tempBLob, mimeType,format);
	DBMS_OUTPUT.PUT_LINE(':' ||
	  TO_CHAR(DBMS_LOB.getLength(tempBLob)/1024)||'KB');
END;
/

25-29:
DECLARE
	obj ORDSYS.ORDAudio;
	ctx RAW(64) := NULL;
BEGIN
	SELECT p.product_audio INTO obj FROM pm.online_media p 
	WHERE p.product_id  = 1729 FOR UPDATE;
	DBMS_OUTPUT.PUT_LINE(obj.getSource());
	obj.import(ctx);
	UPDATE pm.online_media p SET p.product_audio = obj 
	WHERE p.product_id = 1729;
	COMMIT;
END;
/

25-30:
DECLARE
	obj ORDSYS.ORDAudio;
	ctx RAW(64) :=NULL;
BEGIN
	SELECT p.product_audio INTO obj FROM pm.online_media p 
	WHERE p.product_id  = 3117 FOR UPDATE;
	obj.importFrom(ctx,'file','AUDIO_DIR','yishengheqiu.mp3');
	DBMS_OUTPUT.PUT_LINE(':' || 
	  TO_CHAR(obj.getContentLength(ctx)));
	DBMS_OUTPUT.PUT_LINE(obj.getSource());
	UPDATE pm.online_media p SET p.product_audio = obj 
	WHERE p.product_id = 3117;
	COMMIT;
END;
/

25-31:
DECLARE
	obj ORDSYS.ORDAudio;
BEGIN
	SELECT p.product_audio INTO obj FROM pm.online_media p 
	WHERE p.product_id  = 1729 FOR UPDATE;
	obj.setDescription('');
	DBMS_OUTPUT.PUT_LINE(obj.getDescription());
	UPDATE pm.online_media p SET p.product_audio = obj 
	WHERE p.product_id = 1729;
	COMMIT;
END;
/

25-32:
DECLARE
	obj ORDSYS.ORDAudio;
BEGIN
	SELECT p.product_audio INTO obj FROM pm.online_media p 
	WHERE p.product_id  = 1729;
	obj.setFormat('AUFF');
	obj.setEncoding('MULAW');
	obj.setNumberOfChannels(1);
	obj.setSamplingRate(8);
	obj.setSampleSize(8);
	obj.setCompressionType('8BITMONOAUDIO');
	obj.setAudioDuration(16);
	DBMS_OUTPUT.PUT_LINE('ʽ: ' || obj.getFormat());
	DBMS_OUTPUT.PUT_LINE(': ' || obj.getEncoding());
	DBMS_OUTPUT.PUT_LINE(': ' || 
	  TO_CHAR(obj.getNumberOfChannels()));
	DBMS_OUTPUT.PUT_LINE(': ' || 
	  TO_CHAR(obj.getSamplingRate()));
	DBMS_OUTPUT.PUT_LINE('ߴ: ' || 
	  TO_CHAR(obj.getSampleSize()));
	DBMS_OUTPUT.PUT_LINE('ѹ: ' || 
	  obj.getCompressionType());
	DBMS_OUTPUT.PUT_LINE('Ƶ: ' || 
	  TO_CHAR(obj.getAudioDuration()));
END;
/

25-33:
DECLARE
	obj ORDSYS.ORDAudio;
	ctx RAW(64) :=NULL;
BEGIN
	SELECT p.product_audio INTO obj FROM pm.online_media p 
	WHERE p.product_id = 1729 FOR UPDATE;
	obj.setProperties(ctx,FALSE);
	DBMS_OUTPUT.PUT_LINE('ʽ: ' || obj.getformat);
	DBMS_OUTPUT.PUT_LINE(': ' || obj.getEncoding);
	DBMS_OUTPUT.PUT_LINE(': ' || 
	  TO_CHAR(obj.getNumberOfChannels));
	DBMS_OUTPUT.PUT_LINE(': ' || 
	  TO_CHAR(obj.getSamplingRate));
END;
/

25-34:
conn / as sysdba
CREATE OR REPLACE DIRECTORY my_audio_dirAS 'D:\MEDIA\AUDIO';
GRANT READ,WRITE ON DIRECTORY my_audio_dir TO SCOTT;

25-35:
conn scott/tiger
CREATE TABLE audio_table(
  id NUMBER(4) PRIMARY KEY,name VARCHAR2(20),
  audio ORDSYS.ORDAudio
);

25-36:
INSERT INTO audio_table VALUES(1,'',
ORDSYS.ORDAudio.init());
INSERT INTO audio_table VALUES(2,'Windows XP ػ',
ORDSYS.ORDAudio.init());
INSERT INTO audio_table VALUES(3,'ˮл',
ORDSYS.ORDAudio.init('FILE','MY_AUDIO_DIR','shuizhonghua.MP3'));
INSERT INTO audio_table VALUES(4,'Windows XP ',
ORDSYS.ORDAudio.init('FILE','MY_AUDIO_DIR','Windows XP .wav'));
COMMIT;

25-37:
DECLARE
	obj ORDSYS.ORDAudio;
	ctx RAW(64) := NULL;
BEGIN
	SELECT audio INTO obj FROM audio_table WHERE id=1 FOR UPDATE;
	obj.importFrom(ctx,'file','MY_AUDIO_DIR','dangjianrumeng.mp3');
	UPDATE audio_table SET audio=obj WHERE id=1;
	SELECT audio INTO obj FROM audio_table WHERE id=2 FOR UPDATE;
	obj.importFrom(ctx,'file','MY_AUDIO_DIR','Windows XP ػ.wav');
	UPDATE audio_table SET audio=obj WHERE id=2;
	SELECT audio INTO obj FROM audio_table WHERE id=3 FOR UPDATE;
	obj.import(ctx);
	UPDATE audio_table SET audio=obj WHERE id=3;
	SELECT audio INTO obj FROM audio_table WHERE id=4 FOR UPDATE;
	obj.import(ctx);
	UPDATE audio_table SET audio=obj WHERE id=4;
	COMMIT;
END;
/

25-38:
DECLARE
  ctx RAW(64) :=NULL;
BEGIN
  FOR audio_record IN (SELECT * FROM audio_table) LOOP
    audio_record.audio.export(ctx,'file','MY_AUDIO_DIR',
      audio_record.id||'.mp3');
  END LOOP;
END;
/

25-39:
BEGIN
  INSERT INTO pm.online_media (product_id, product_testimonials)
     VALUES (2808,ORDSYS.ORDDoc.init());
  COMMIT;
END;
/

25-40:
BEGIN
  INSERT INTO pm.online_media (product_id,product_testimonials)
  VALUES (2999,ORDSYS.ORDDoc.init('file','DOC_DIR','1.doc'));
END;
/

25-41:
DECLARE
	obj ORDSYS.ORDDoc;
	tempBLob BLOB;
	mimeType VARCHAR2(4000);
	format VARCHAR2(31);
	ctx RAW(64) :=NULL;
BEGIN
	SELECT product_testimonials INTO obj FROM pm.online_media 
	WHERE product_id = 2999 ;
	DBMS_LOB.CREATETEMPORARY(tempBLob, true, 10);
	obj.getContentInLob(ctx,tempBLob, mimeType,format);
	DBMS_OUTPUT.PUT_LINE(':' || 
	  TO_CHAR(DBMS_LOB.getLength(tempBLob)));
END;
/

25-42:
DECLARE
   obj ORDSYS.ORDDoc;
   ctx RAW(64) :=NULL;
BEGIN
   SELECT product_testimonials INTO obj FROM pm.online_media
   WHERE product_id = 2808 FOR UPDATE;
   obj.setSource('file','DOC_DIR','2.xls');
   DBMS_OUTPUT.PUT_LINE('OSļ:'||obj.getSource());
   obj.import(ctx,FALSE);
   UPDATE pm.online_media SET product_testimonials=obj
   WHERE product_id=2808;
   COMMIT;
END;
/

25-43:
DECLARE
	obj ORDSYS.ORDDoc;
	ctx RAW(64) :=NULL;
BEGIN
	SELECT product_testimonials INTO obj FROM pm.online_media
	WHERE product_id=2999 FOR UPDATE;
	obj.importFrom(ctx,'file','DOC_DIR','1.doc',FALSE);
	DBMS_OUTPUT.PUT_LINE(':'||
	  TO_CHAR(DBMS_LOB.GETLENGTH(obj.getContent())));
	UPDATE pm.online_media SET product_testimonials=obj WHERE product_id=2999;
	COMMIT;
END;
/

25-44:
DECLARE
  obj ORDSYS.ORDDoc;
BEGIN
  SELECT product_testimonials INTO obj FROM pm.online_media 
    WHERE product_id = 2808 FOR UPDATE;
  obj.setFormat('XLS');
  DBMS_OUTPUT.put_line('ʽ: '||obj.getformat());
  COMMIT;
END;
/

25-45:
conn / as sysdba
CREATE OR REPLACE DIRECTORY doc_dir AS 'D:\MEDIA\DOC';
GRANT READ,WRITE ON DIRECTORY doc_dir TO SCOTT;

25-46:
conn scott/tiger
CREATE TABLE doc_table(
id NUMBER(4) PRIMARY KEY,name VARCHAR2(20),
doc ORDSYS.ORDDOC
);

25-47:
INSERT INTO doc_table VALUES(1,'Wordĵ',ORDSYS.ORDDOC.init());
INSERT INTO doc_table VALUES(2,'Excelĵ',ORDSYS.ORDDOC.init());
INSERT INTO doc_table VALUES(3,'mp3',
ORDSYS.ORDDOC.init('file','DOC_DIR','3.MP3'));
INSERT INTO doc_table VALUES(4,'JPGͼƬ',
ORDSYS.ORDDOC.init('file','DOC_DIR','4.JPG'));
COMMIT;

25-48:
DECLARE
	obj ORDSYS.ORDDoc;
	ctx RAW(64) := NULL;
BEGIN
	SELECT doc INTO obj FROM doc_table WHERE id=1 FOR UPDATE;
	obj.importFrom(ctx,'file','DOC_DIR','1.doc',FALSE);
	UPDATE doc_table SET doc=obj WHERE id=1;
	SELECT doc INTO obj FROM doc_table WHERE id=2 FOR UPDATE;
	obj.importFrom(ctx,'file','DOC_DIR','2.xls',FALSE);
	UPDATE doc_table SET doc=obj WHERE id=2;
	SELECT doc INTO obj FROM doc_table WHERE id=3 FOR UPDATE;
	obj.import(ctx,FALSE);
	UPDATE doc_table SET doc=obj WHERE id=3;
	SELECT doc INTO obj FROM doc_table WHERE id=4 FOR UPDATE;
	obj.import(ctx,FALSE);
	UPDATE doc_table SET doc=obj WHERE id=4;
	COMMIT;
END;
/

25-49:
DECLARE
  ctx RAW(64) :=NULL;
  temp VARCHAR2(10);
BEGIN
  FOR doc_record IN (SELECT * FROM doc_table) LOOP
    CASE doc_record.id
      WHEN 1 THEN temp:='.doc';
      WHEN 2 THEN temp:='.xls';
      WHEN 3 THEN temp:='.mp3';
      WHEN 4 THEN temp:='.jpg';
    END CASE;
    doc_record.doc.export(ctx,'file','DOC_DIR',
      '1_'||doc_record.id||temp);
  END LOOP;
END;
/

25-50:
BEGIN
	INSERT INTO pm.online_media (product_id, product_photo)  
	VALUES (3501, ORDSYS.ORDImage.init()); 
	COMMIT;
END;
/

25-51:
conn / as sysdba
CREATE OR REPLACE DIRECTORY image_dir
AS 'D:\MEDIA\IMAGE';
GRANT READ,WRITE ON DIRECTORY image_dir
TO pm;
conn pm/pm
BEGIN
	INSERT INTO pm.online_media (product_id, product_photo) 
	VALUES (3515, ORDSYS.ORDImage.init(
	  'FILE', 'IMAGE_DIR','1.jpg'));
	COMMIT;
END;
/

25-52:
DECLARE
   image ORDSYS.ORDImage;
   properties_match BOOLEAN;
BEGIN
   SELECT p.product_photo INTO image FROM pm.online_media p
   WHERE p.product_id = 2268;
   properties_match := image.checkProperties();
   IF properties_match THEN
     DBMS_OUTPUT.PUT_LINE('Լɹ');
   ELSE
     DBMS_OUTPUT.PUT_LINE('Լʧ');
   END IF;
END;
/

25-53:
DECLARE
	image_1 ORDSYS.ORDImage;
	image_2 ORDSYS.ORDImage;
BEGIN
	INSERT INTO pm.online_media (product_id, product_photo) 
	VALUES (3091, ORDSYS.ORDImage.init());
	SELECT product_photo INTO image_1 FROM pm.online_media 
	WHERE product_id = 3515;
	SELECT product_photo INTO image_2 FROM pm.online_media 
	WHERE product_id = 3091 FOR UPDATE;
	image_1.copy(image_2);
	UPDATE pm.online_media SET product_photo = image_2
	WHERE product_id = 3091;
	COMMIT;
END;
/

25-54:
DECLARE
	image ORDSYS.ORDImage;
	compression_format VARCHAR2(4000);
BEGIN
	SELECT p.product_photo INTO image FROM pm.online_media p
	WHERE p.product_id = 2268;
	compression_format := image.getCompressionFormat();
	DBMS_OUTPUT.PUT_LINE('ѹʽ:' ||compression_format);
END;
/

25-55:
DECLARE
   image ORDSYS.ORDImage;
   content_format VARCHAR2(4000);
BEGIN
   SELECT p.product_photo INTO image FROM pm.online_media p
   WHERE p.product_id = 2268;
   content_format := image.getContentFormat();
   DBMS_OUTPUT.PUT_LINE('ݸʽ:' || content_format);
   COMMIT;
END;
/

25-56:
DECLARE
	image ORDSYS.ORDImage;
	content_length INTEGER;
BEGIN
	SELECT p.product_photo INTO image FROM pm.online_media p
	WHERE p.product_id = 2268;
	content_length := image.getContentLength();
	DBMS_OUTPUT.PUT_LINE('ݳ:' || content_length);
END;
/

25-57:
DECLARE
	image ORDSYS.ORDImage;
	file_format VARCHAR2(4000);
BEGIN
	SELECT p.product_photo INTO image FROM pm.online_media p
	WHERE p.product_id = 2268;
	file_format := image.getFileFormat();
	DBMS_OUTPUT.PUT_LINE('ļʽ:' || file_format);
END;
/

25-58:
DECLARE
   image ORDSYS.ORDImage;
   height INTEGER;
BEGIN
   SELECT p.product_photo INTO image FROM pm.online_media p
   WHERE p.product_id = 2268;
   height := image.getHeight();
   DBMS_OUTPUT.PUT_LINE('ͼ߶:' || height);
END;
/

25-59:
DECLARE
   image ORDSYS.ORDImage;
   width INTEGER;
BEGIN
   SELECT p.product_photo INTO image FROM pm.online_media p
   WHERE p.product_id = 2268;
   width := image.getWidth();
   DBMS_OUTPUT.PUT_LINE('ͼ:' || width);
END;
/

25-60:
DECLARE
   obj ORDSYS.ORDImage;
   ctx RAW(64) :=NULL;
BEGIN
   SELECT p.product_photo INTO obj FROM pm.online_media p
   WHERE p.product_id  = 3515 FOR UPDATE;
   DBMS_OUTPUT.PUT_LINE('ⲿԴ:'||obj.getSource());
   obj.import(ctx);
   DBMS_OUTPUT.PUT_LINE(':' || obj.getContentLength());
   UPDATE pm.online_media p SET p.product_photo = obj
   WHERE p.product_id = 3515;
   COMMIT;
END;
/

25-61:
DECLARE
	obj ORDSYS.ORDImage;
	ctx RAW(64) :=NULL;
BEGIN
	SELECT p.product_photo INTO obj FROM pm.online_media p 
	WHERE p.product_id  = 2268 FOR UPDATE;
	obj.importFrom(ctx,'file','IMAGE_DIR','4.jpg');
	DBMS_OUTPUT.PUT_LINE(':' || obj.getContentLength());
	DBMS_OUTPUT.PUT_LINE('Դ:' || obj.getSource());
	UPDATE pm.online_media p SET p.product_photo = obj 
	WHERE p.product_id = 2268;
	COMMIT;
END;
/

25-62:
DECLARE
	obj ORDSYS.ORDImage;
BEGIN
	SELECT product_photo INTO obj FROM pm.online_media
	WHERE product_id = 3515 FOR UPDATE;
	obj.process('fileFormat=GIFF');
	UPDATE pm.online_media SET product_photo = obj 
	WHERE product_id = 3515;
	COMMIT;
END;
/

25-63:
DECLARE
	obj ORDSYS.ORDImage;
BEGIN
	SELECT product_photo INTO obj FROM pm.online_media
	WHERE product_id = 3515 FOR UPDATE;
	obj.process('fileFormat=TIFF, contentFormat=8BITBIPLUTRGB');
	UPDATE pm.online_media SET product_photo = obj 
	WHERE product_id = 3515;
	COMMIT;
END;
/

25-64:
DECLARE
	obj_1 ORDSYS.ORDImage;
	obj_2 ORDSYS.ORDImage;
BEGIN
	SELECT product_photo, product_thumbnail INTO obj_1, obj_2 
	FROM pm.online_media WHERE product_id = 3515 FOR UPDATE;
	obj_1.processCopy('maxScale=32 32', obj_2);
	UPDATE pm.online_media SET product_thumbnail = obj_2 
	WHERE product_id=3515;
	COMMIT;
END;
/

25-65:
DECLARE
	image ORDSYS.ORDImage;
BEGIN
	SELECT p.product_photo INTO image FROM pm.online_media p
	WHERE p.product_id = 3515;
	image.setProperties();
	DBMS_OUTPUT.PUT_LINE('ͼ:' || image.getWidth());
	DBMS_OUTPUT.PUT_LINE('ͼ߶:' || image.getHeight());
	DBMS_OUTPUT.PUT_LINE('ͼߴ:' || image.getContentLength());
	DBMS_OUTPUT.PUT_LINE('ͼļʽ:' || image.getFileFormat());
	DBMS_OUTPUT.PUT_LINE('ͼݸʽ:' || image.getContentFormat());
	DBMS_OUTPUT.PUT_LINE('ͼѹʽ:' || image.getCompressionFormat());
	DBMS_OUTPUT.PUT_LINE('ͼMIME:' || image.getMimeType());
END;
/

25-66:
conn / as sysdba
CREATE OR REPLACE DIRECTORY my_image_dir
AS 'D:\MEDIA\IMAGE';
GRANT READ,WRITE ON DIRECTORY my_image_dir
TO scott;

25-67:
conn scott/tiger
CREATE TABLE image_table(
   id NUMBER(4) PRIMARY KEY,name VARCHAR2(20),
   image ORDSYS.ORDImage
);

25-68:
INSERT INTO image_table VALUES(1,'JPGʾ',
ORDSYS.ORDImage.init());
INSERT INTO image_table VALUES(2,'GIFʾ',
ORDSYS.ORDImage.init());
INSERT INTO image_table VALUES(3,'BMPʾ',
ORDSYS.ORDImage.init('FILE','MY_IMAGE_DIR','3.bmp'));
COMMIT;

25-69:
DECLARE
  obj ORDSYS.ORDImage;
  ctx RAW(64) := NULL;
BEGIN
  SELECT image INTO obj FROM image_table WHERE id=1 FOR UPDATE;
  obj.importFrom(ctx,'file','MY_IMAGE_DIR','1.jpg');
  UPDATE image_table SET image=obj WHERE id=1;
  SELECT image INTO obj FROM image_table WHERE id=2 FOR UPDATE;
  obj.importFrom(ctx,'file','MY_IMAGE_DIR','2.gif');
  UPDATE image_table SET image=obj WHERE id=2;
  SELECT image INTO obj FROM image_table WHERE id=3 FOR UPDATE;
  obj.import(ctx);
  UPDATE image_table SET image=obj WHERE id=3;
  COMMIT;
END;
/

25-70:
DECLARE
	obj ORDSYS.ORDImage;
BEGIN
	SELECT image INTO obj FROM image_table 
	WHERE id=1 FOR UPDATE;
	obj.process('fileFormat=GIFF, maxscale=200 150');
	UPDATE image_table SET image=obj WHERE id=1;
	COMMIT;
END;
/

25-71:
DECLARE
  ctx RAW(64) :=NULL;
BEGIN
  FOR image_record IN (SELECT * FROM image_table) LOOP
    image_record.image.export(ctx,'file','MY_IMAGE_DIR',
      'my_'||image_record.id||'.gif');
  END LOOP;
END;
/

25-72:
BEGIN
  INSERT INTO pm.online_media (product_id, product_video) 
  VALUES (2004, ORDSYS.ORDVideo.init());
  COMMIT;
END;
/

25-73:
conn / as sysdba
CREATE OR REPLACE DIRECTORY video_dir
AS 'D:\MEDIA\VIDEO';
GRANT READ,WRITE ON DIRECTORY video_dir
TO pm;
conn pm/pm
BEGIN
   INSERT INTO pm.online_media (product_id, product_video)
   VALUES (2030,
     ORDSYS.ORDVideo.init('FILE', 'VIDEO_DIR','1.avi'));
   COMMIT;
END;
/

25-74:
DECLARE
   obj ORDSYS.ORDVideo;
   ctx RAW(64) :=NULL;
BEGIN
   SELECT p.product_video INTO obj FROM pm.online_media p
   WHERE p.product_id  = 2268;
   IF(obj.checkProperties(ctx)) THEN
     DBMS_OUTPUT.PUT_LINE('Գɹ');
   ELSE
     DBMS_OUTPUT.PUT_LINE('ʧ');
   END IF;
   COMMIT;
END;
/

25-75:
DECLARE
   obj ORDSYS.ORDVideo;
   tempLob   CLOB;
   ctx RAW(64) :=NULL;
BEGIN
   SELECT p.product_video INTO obj FROM pm.online_media p
   WHERE p.product_id  = 2030;
   DBMS_LOB.CREATETEMPORARY(tempLob, FALSE, DBMS_LOB.CALL);
   obj.getAllAttributes(ctx,tempLob);
   DBMS_OUTPUT.PUT_LINE(DBMS_LOB.substr(tempLob,
     DBMS_LOB.getLength(tempLob),1));
END;
/

25-76:
DECLARE
   obj ORDSYS.ORDVideo;
   res INTEGER;
BEGIN
   SELECT p.product_video INTO obj FROM pm.online_media p
   WHERE p.product_id  = 2268;
   res := obj.getBitRate();
   DBMS_OUTPUT.PUT_LINE('bit rate:'||res );
   COMMIT;
END;
/

25-77:
DECLARE
   obj ORDSYS.ORDVideo;
   res VARCHAR2(4000);
BEGIN
   SELECT p.product_video INTO obj FROM pm.online_media p
   WHERE p.product_id  = 2268;
   res := obj.getCompressionType();
   DBMS_OUTPUT.PUT_LINE('ѹ: ' ||res);
END;
/

25-78:
DECLARE
   obj ORDSYS.ORDVideo;
   tempBLob BLOB;
   mimeType VARCHAR2(4000);
   format VARCHAR2(31);
   ctx RAW(64) :=NULL;
BEGIN
   SELECT p.product_video INTO obj FROM pm.online_media p
   WHERE p.product_id  = 2030;
   DBMS_LOB.CREATETEMPORARY(tempBLob, true, 10);
   obj.getContentInLob(ctx,tempBLob, mimeType,format);
   DBMS_OUTPUT.PUT_LINE(':' ||
     TO_CHAR(DBMS_LOB.getLength(tempBLob)));
END;
/

25-79:
DECLARE
	obj ORDSYS.ORDVideo;
BEGIN
	SELECT p.product_video INTO obj FROM pm.online_media p
	WHERE p.product_id  = 2268;
	DBMS_OUTPUT.PUT_LINE('Ƶʽ:'||obj.getFormat());
END;
/

25-80:
DECLARE
	obj ORDSYS.ORDVideo;
	res INTEGER;
BEGIN
	SELECT p.product_video INTO obj FROM pm.online_media p 
	WHERE p.product_id  = 2268;
	res := obj.getFrameRate();
	DBMS_OUTPUT.PUT_LINE('֡: ' ||res);
END;
/

25-81:
DECLARE
	obj ORDSYS.ORDVideo;
	width INTEGER;
	height INTEGER;
BEGIN
	SELECT p.product_video INTO obj FROM pm.online_media p
	WHERE p.product_id  = 2268;
	obj.getFrameSize(width, height);
	DBMS_OUTPUT.PUT_LINE(':' || width);
	DBMS_OUTPUT.PUT_LINE('߶:' || height);
END;
/

25-82:
DECLARE
	obj ORDSYS.ORDVideo;
	res INTEGER;
BEGIN
	SELECT p.product_video INTO obj FROM pm.online_media p
	WHERE p.product_id  = 2268;
	res := obj.getVideoDuration();
	DBMS_OUTPUT.PUT_LINE('Ƶ: ' ||res);
END;
/

25-83:
DECLARE
	obj ORDSYS.ORDVideo;
	ctx RAW(64) :=NULL;
BEGIN
	SELECT p.product_video INTO obj FROM pm.online_media p
	WHERE p.product_id = 2030 FOR UPDATE;
	obj.setSource('file','VIDEO_DIR','1.avi');
	DBMS_OUTPUT.PUT_LINE(obj.getSource());
	obj.import(ctx);
	DBMS_OUTPUT.PUT_LINE(''||TO_CHAR(obj.getContentLength(ctx)));
	UPDATE pm.online_media p SET p.product_video = obj 
	WHERE p.product_id = 2030;
	COMMIT;
END;
/

25-84:
DECLARE
  obj ORDSYS.ORDVideo;
  ctx RAW(64) :=NULL;
BEGIN
  SELECT p.product_video INTO obj FROM pm.online_media p
     WHERE p.product_id = 2004 FOR UPDATE;
  obj.importFrom(ctx,'file','VIDEO_DIR','2.dat');
  DBMS_OUTPUT.PUT_LINE(':' ||TO_CHAR(obj.getContentLength(ctx)));
  UPDATE pm.online_media p SET p.product_video = obj 
  WHERE p.product_id = 2004;
  COMMIT;
END;
/

25-85:
DECLARE
	obj ORDSYS.ORDVideo;
BEGIN
	SELECT p.product_video INTO obj FROM pm.online_media p
	WHERE p.product_id = 2030 FOR UPDATE;
	obj.setDescription('ҺͲԭиԼ');
	DBMS_OUTPUT.PUT_LINE(obj.getDescription());
	UPDATE pm.online_media p SET p.product_video = obj 
	WHERE p.product_id = 2688;
	COMMIT;
END;
/

25-86:
DECLARE
	obj ORDSYS.ORDVideo;
BEGIN
	SELECT p.product_video INTO obj FROM pm.online_media p
	WHERE p.product_id = 2268 FOR UPDATE;
	DBMS_OUTPUT.PUT_LINE('ǰʽ:'||obj.getFormat());
	obj.setFormat('RM');
	DBMS_OUTPUT.PUT_LINE('¸ʽ:'||obj.getFormat());
	UPDATE pm.online_media p SET p.product_video = obj
	WHERE p.product_id = 2268;
	COMMIT;
END;
/

25-87:
DECLARE
   obj ORDSYS.ORDVideo;
BEGIN
   SELECT p.product_video INTO obj FROM pm.online_media p
   WHERE p.product_id = 2030 FOR UPDATE;
   obj.setFrameSize(1,2);
   obj.setFrameResolution(4);
   obj.setFrameRate(5);
   obj.setVideoDuration(20);
   obj.setNumberOfFrames(8);
   obj.setCompressionType('Cinepak');
   obj.setBitRate(1500);
   obj.setNumberOfColors(256);
   UPDATE pm.online_media p SET p.product_video = obj
   WHERE p.product_id = 2030;
   COMMIT;
END;
/

25-88:
DECLARE
   obj ORDSYS.ORDVideo;
   width integer;
   height integer;
BEGIN
   SELECT p.product_video INTO obj FROM pm.online_media p
   WHERE p.product_id = 2030 FOR UPDATE;
   obj.setKnownAttributes('MOOV',1,2,4,5,20,8,'Cinepak', 256, 1500);
   obj.getFrameSize(width, height);
   DBMS_OUTPUT.PUT_LINE(':'||TO_CHAR(width));
   DBMS_OUTPUT.PUT_LINE('߶:'||TO_CHAR(height));
   DBMS_OUTPUT.PUT_LINE('ʽ:'|| obj.getFormat());
   DBMS_OUTPUT.PUT_LINE('ֱ:'||TO_CHAR(obj.getFrameResolution()));
   DBMS_OUTPUT.PUT_LINE('֡: '||TO_CHAR(obj.getFrameRate()));
   DBMS_OUTPUT.PUT_LINE('Ƶ:' || TO_CHAR(obj.getVideoDuration()));
   DBMS_OUTPUT.PUT_LINE('֡: ' || TO_CHAR(obj.getNumberOfFrames()));
   DBMS_OUTPUT.PUT_LINE('ѹ: ' || obj.getCompressionType());
   DBMS_OUTPUT.PUT_LINE('λ: ' || TO_CHAR(obj.getBitRate()));
   DBMS_OUTPUT.PUT_LINE('ɫ: ' || TO_CHAR(obj.getNumberOfColors()));
   UPDATE pm.online_media p SET p.product_video = obj
   WHERE p.product_id = 2030;
   COMMIT;
END;
/

25-89:
conn / as sysdba
CREATE OR REPLACE DIRECTORY my_video_dir AS 'D:\MEDIA\VIDEO';
GRANT READ,WRITE ON DIRECTORY my_video_dir TO SCOTT;

25-90:
conn scott/tiger
CREATE TABLE video_table(
  id NUMBER(4) PRIMARY KEY,name VARCHAR2(20),
  video ORDSYS.ORDVideo
);

25-91:
INSERT INTO video_table VALUES(1,'ҺͲԭиԼ',
ORDSYS.ORDVideo.init());
INSERT INTO video_table VALUES(2,'ԭ',
ORDSYS.ORDVideo.init('FILE','MY_VIDEO_DIR','2.dat'));
COMMIT;

25-92:
DECLARE
  obj ORDSYS.ORDVideo;
  ctx RAW(64) := NULL;
BEGIN
  SELECT video INTO obj FROM video_table WHERE id=1 FOR UPDATE;
  obj.importFrom(ctx,'file','MY_VIDEO_DIR','1.avi');
  UPDATE video_table SET video=obj WHERE id=1;
  SELECT video INTO obj FROM video_table WHERE id=2 FOR UPDATE;
  obj.import(ctx);
  UPDATE video_table SET video=obj WHERE id=3;
  COMMIT;
END;
/

25-93:
DECLARE
  ctx RAW(64) :=NULL;
BEGIN
  FOR video_record IN (SELECT * FROM video_table) LOOP
    video_record.video.export(ctx,'file','MY_VIDEO_DIR',
      'my_'||video_record.id||'.avi');
  END LOOP;
END;
/
