橡実践Oracle Objects for OLE

Similar documents
1 SQL Server SQL Oracle SQL SQL* Plus PL/SQL 2 SQL Server SQL Server SQL Oracle SQL SQL*Plus SQL Server GUI 1-1 osql 1-1 Transact- SQL SELECTFROM 058

ストラドプロシージャの呼び出し方

PowerPoint -O80_REP.PDF

Oracle Lite Tutorial

D1印刷用.PDF

<Documents Title Here>

Oracle Lite Tutorial

第 2 章 問合せの基本操作 この章では データベースから情報を検索する際に使用する SELECT コマンド および SELECT コマンドと 同時に使用する句について説明します 1. 問合せとは 2. 基本的な問合せ 3. 列の別名 4. 重複行を一意にする 5. 検索行の絞込み 6. 文字パター

tkk0408nari

DB12.1 Beta HandsOn Seminar

第 2 章 PL/SQL の基本記述 この章では PL/SQL プログラムの基本的な記述方法について説明します 1. 宣言部 2. 実行部 3. 例外処理部

_02_3.ppt

はじめに コースの概要と目的条件分岐の方法や複雑な集計の手法など SQL のコーディングの幅を広げるためのテクニックについて説明します また パフォーマンスを考慮した記述方法や正しい結果を取得するための記述方法などについても あわせて説明します 本コースでは 実践的な SQL の記述手法を広く浅く紹

日本オラクル株式会社


領域サイズの見積方法

~~~~~~~~~~~~~~~~~~ wait Call CPU time 1, latch: library cache 7, latch: library cache lock 4, job scheduler co

,, create table drop table alter table

データベース認識Webサービス

橡j_Oracle_whitepaper.PDF

PostgreSQL カンファレンス 2013 証券取引バックオフィスにおける Oracle から PostgreSQL への マイグレーション SBI ジャパンネクスト証券株式会社 イアン バーウィック

052-XML04/fiÁ1-part3-’ÓŠ¹

Lesson 1 1 EXVBA2000 Lesson01 Lesson01.xls 2

1,.,,,., RDBM, SQL. OSS,, SQL,,.

橡ExCtrlPDF.PDF

Microsoft Word - 430_15_Developing_Stored_Procedure.doc

1 ex01.sql ex01.sql ; user_id from (select user_id ;) user_id * select select (3+4)*7, SIN(PI()/2) ; (1) select < > from < > ; :, * user_id user_name

第 1 章 条件分岐 この章では 条件に応じて処理を分岐する方法について説明します 1. CASE 式で複雑な条件分岐を実現 2. 関数を使用した条件分岐 3. MERGE 文による条件に応じた DML の実行

Microsoft Word - Android_SQLite講座_画面800×1280

Postgres Plus Advanced Server 9.3パーティションテーブルの特徴と性能検証レポート

ハイウォーターマークを知る

PowerPoint プレゼンテーション

Oracle Lite Tutorial

_02-4.ppt

n n n ( ) n Oracle 16 PostgreSQL 3 MySQL

untitled

Warehouse Builderにおける予測分析の使用

com.ibm.etools.egl.jsfsearch.tutorial.doc.ps

Case 0 sqlcmdi.parameters("?tencode").value = Iidata(0) sqlcmdi.parameters("?tenname").value = Iidata(1) 内容を追加します sqlcmdi.executenonquery() Case Else

Oracle Developer Release 6i

PowerPoint プレゼンテーション

プレポスト【問題】

9399-TOOLSGRJA

Oracle Rdb: PowerPoint Presentation

Windowsユーザーの為のOracle Database セキュリティ入門

※サンプルアプリケーションを固めたファイル(orcasample

untitled

第 5 章 結合 結合のパフォーマンスに影響を与える結合の種類と 表の結合順序について内部動作を交えて 説明します 1. 結合処理のチューニング概要 2. 結合の種類 3. 結合順序 4. 結合処理のチューニングポイント 5. 結合関連のヒント

3 Powered by mod_perl, Apache & MySQL use Item; my $item = Item->new( id => 1, name => ' ', price => 1200,

TopLink å SampleClient.java... 5 Ò readallsample() querysample() cachesample() Ç..

D0120.PDF

Wiki Wiki Wiki...

AccessVBA−‹ŠpŁÒ-flO“Z

Oracle9i Reportsのチューニング

untitled

XML Consortium & XML Consortium 1 XML Consortium XML Consortium 2

( ハイブリット型データベース環境 ) プロトタイプ検証結果 第二版 有限会社ツインズ Twinz Co., Ltd 年 7 月 3 日 /15

TopLink È... 3 TopLink...5 TopLink åø... 6 TopLink å Workbench O/R ~... 8 Workbench À ~... 8 Foundation Library å... 8 TopL

[Lab 2]Oracleからの移行を促進する新機能

Slide 1

データを TreeView コントロールで表示 VisualStudio2017 の Web サイトプロジェクトで bootstrap, 及び script フォルダの js ファイルが使用できるマスターページを親とする TestTreeView.aspx ページを作成します 下記の html コー

74 No ACCESS

answer.indd

早分かりS2Dao

Oracle Database Connect 2017 JPOUG

PGECons技術ドキュメントテンプレート Ver.3

スライド 0

untitled

自己管理型データベース: アプリケーションおよびSQLチューニング・ガイド

1. 入力画面

Microsoft PowerPoint - 3-Forms-Others.ppt

Microsoft PowerPoint pptx

5 Q. 結果セットを 1 行飛ばしに FETCH することはできますか A. できません Oracle は必ず結果セットを上から 1 行ずつ FETCH します 6 Q. カーソルを一度にいくつまでオープンできますか A. 初期化パラメータ OPEN_CURSORS で指定したの値までカーソルをオ

With sqlda sqlda に SelectCommand を追加.SelectCommand = New MySqlCommand() With.SelectCommand.CommandType = CommandType.Text.CommandText = "select * from


D0050.PDF


コンピュータ概論

Oracle活用実践演習コース

ii II Web Web HTML CSS PHP MySQL Web Web CSS JavaScript Web SQL Web

コンピュータ概論

: ORDER BY

PowerPoint プレゼンテーション

D0020.PDF

Slide 1

目次 1 集計関数 / 分析関数とは 2 集計関数 / 分析関数のパフォーマンス効果 3 ケーススタディグループ小計やクロス集計を計算するランキングを表示する前月比較を表示する累計を計算する移動平均を計算する構成比を計算する Oracle8i SQL Oracle8i Oracle Oracle C

test

PowerPoint Presentation

Dolteng Scaffoldに対する機能追加とマスタ-ディテールScaffoldの紹介

25 II :30 16:00 (1),. Do not open this problem booklet until the start of the examination is announced. (2) 3.. Answer the following 3 proble

目次 更新履歴... 1 はじめに... 3 レコードセット?... 3 準備... 5 SQL でデータを取得する... 6 データのループ処理... 7 列の値を取得する... 7 対象行を変更する (MoveFirst, MoveNext, MovePrevious, MoveLast)...

Chapter

untitled

(Microsoft Word - Lab5-PLSQL\203I\203u\203W\203F\203N\203g\202\314\210\332\215s.doc)

94 expression True False expression FalseMSDN IsNumber WorksheetFunctionIsNumberexpression expression True Office support.office.com/ja-jp/ S

BASICとVisual Basic

D0090.PDF

スライド 1

ストアドプロシージャ移行調査編

PowerRDBconnector説明書(SQLServer編)

Transcription:

THE Database FOR Network Computing

2 1. 2 1-1. PL/SQL 2 1-2. 9 1-3. PL/SQL 11 2. 14 3. 16 3-1. NUMBER 16 3-2. CHAR/VARCHAR2 18 3-3. DATE 18 4. 23 4-1. 23 4-2. / 24 26 1. COPYTOCLIPBOARD 26 III. 28 1. INSERT 28 2.?? 33 3. ORACLE NULL 35 4. 36 5. 100 20 36 6. 44 7. DEFAULT 45 47 Oracle Objects for OLE 1

Oracle Objects for OLE 2

Private Sub Command1_Click() sqlstmt = "insert into test (ID) values (:id_num)" '100 INSERT OraDatabase.Parameters.Add "id_num", 1, ORAPARM_INPUT OraDatabase.Parameters("id_num").ServerType=ORATYPE_NU MBER Set OraSQL = OraDatabase.CreateSQL(sqlstmt, &H0&) For ID = 1 To 100 OraDatabase.Parameters("id_num").Value = ID result = OraSQL.Refresh Next OraDatabase.Parameters.Remove "id_num" End Sub Private Sub Command2_Click() sqlstmt = "DECLARE " & _ "id_num INTEGER;" & _ "BEGIN " & _ "FOR id_num IN 1..100 LOOP " & _ "insert into test (ID) values (id_num);" & _ "END LOOP;" & _ "END;" result = OraDatabase.ExecuteSQL(sqlstmt) Oracle Objects for OLE 3

CREATE OR REPLACE PROCEDURE sp_test IS id_num INTEGER; BEGIN FOR id_num IN 1..100 LOOP insert into test (ID) values (id_num); END; / END LOOP; Oracle Objects for OLE 4

SQL> show error Oracle Objects for OLE 5

Private Sub Command3_Click() sqlstmt = "BEGIN sp_test; END;" OraDatabase.ExecuteSQL (sqlstmt) End Sub CREATE OR REPLACE FUNCTION sf_test RETURN NUMBER IS v_number NUMBER; BEGIN v_number := 1; RETURN v_number; END; / Oracle Objects for OLE 6

Private Sub Command3_Click() Dim v_function As Integer sqlstmt = "SELECT sf_test FROM dual" Set OraDynaset = OraDatabase.CreateDynaset(sqlstmt, &H0&) v_function = OraDynaset.Fields(0).Value MsgBox " " & v_function & " End Sub CREATE OR REPLACE PACKAGE pkg_test AS PROCEDURE sp_test; FUNCTION sf_test RETURN NUMBER; END pkg_test; / CREATE OR REPLACE PACKAGE BODY pkg_test AS PROCEDURE sp_test IS id_num INTEGER; BEGIN FOR id_num IN 1..100 LOOP insert into test (ID) values (id_num); END LOOP; END sp_test; FUNCTION sf_test RETURN NUMBER IS v_number NUMBER; BEGIN v_number := 1; RETURN v_number; END sf_test; END pkg_test; Oracle Objects for OLE / 7

Private Sub Command3_Click() sqlstmt = "BEGIN pkg_test.sp_test; END;" OraDatabase.ExecuteSQL (sqlstmt) End Sub Private Sub Command3_Click() Dim v_function As Integer sqlstmt = "SELECT pkg_test.sf_test FROM dual" Set OraDynaset = OraDatabase.CreateDynaset(sqlstmt, &H0&) v_function = OraDynaset.Fields(0).Value MsgBox " " & v_function & " End Sub Oracle Objects for OLE 8

Private Sub Command1_Click() sqlstmt = "insert into test (ID) values (:id_num)" '100 INSERT OraDatabase.Parameters.Add "id_num", 1, ORAPARM_INPUT OraDatabase.Parameters("id_num").ServerType=ORATYPE_NUMB ER Set OraSQL = OraDatabase.CreateSQL(sqlstmt, &H0&) For ID = 1 To 100 OraDatabase.Parameters("id_num").Value = ID result = OraSQL.Refresh Next OraDatabase.Parameters.Remove "id_num" End Sub Private Sub Command3_Click() sqlstmt = "insert into test (ID) values (:id_num)" '100 INSERT OraDatabase.Parameters.AddTable "id_num", _ ORAPARM_INPUT, ORATYPE_NUMBER, 100, 5 Set OraParamArray = OraDatabase.Parameters("id_num") For ID = 1 To 100 OraParamArray.put_Value ID, ID - 1 Next ID OraDatabase.ExecuteSQL (sqlstmt) OraDatabase.Parameters.Remove "id_num" End Sub Oracle Objects for OLE 9

Oracle Objects for OLE 10

CREATE OR REPLACE PACKAGE pkg_ref AS CURSOR c1 IS SELECT ename FROM emp; TYPE empcur IS REF CURSOR RETURN c1%rowtype; PROCEDURE GetEmpData(indeptno IN NUMBER, EmpCursor in out empcur ); END; / CREATE OR REPLACE PACKAGE BODY pkg_ref AS PROCEDURE GetEmpData(indeptno IN NUMBER, EmpCursor in out empcur ) IS BEGIN OPEN EmpCursor FOR SELECT ename FROM emp WHERE deptno = indeptno; END GetEmpData; END pkg_ref; / Oracle Objects for OLE 11

Private Sub Command3_Click() OraDatabase.Parameters.Add "DEPTNO", 10, ORAPARM_INPUT OraDatabase.Parameters("DEPTNO").ServerType = _ ORATYPE_NUMBER sqlstmt = "Begin pkg_ref.getempdata (:DEPTNO,:EmpCursor); end;" Set OraDynaset = OraDatabase.CreatePlsqlDynaset _ (sqlstmt, "EmpCursor", 0&) Oracle Objects for OLE 12

CREATE OR REPLACE PACKAGE pkg_ins IS TYPE t_val_tbl IS TABLE OF NUMBER INDEX BY BINARY_INTEGER; PROCEDURE sp_ins(val_tbl t_val_tbl, i_count INTEGER); END pkg_ins; / CREATE OR REPLACE PACKAGE BODY pkg_ins IS PROCEDURE sp_ins(val_tbl t_val_tbl, i_count INTEGER) IS i_index INTEGER; BEGIN For i_index In 1..i_count LOOP INSERT INTO test(id) VALUES (val_tbl(i_index)); END LOOP; END sp_ins; END pkg_ins; / Private Sub Command2_Click() sqlstmt = "BEGIN testpkg.testsp(:id_num, 100); END;" '100 INSERT OraDatabase.Parameters.AddTable "id_num", ORAPARM_INPUT,_ ORATYPE_NUMBER, 100, 5 Set OraParamArray = OraDatabase.Parameters("id_num") For ID = 1 To 100 OraParamArray.put_Value ID, ID - 1 Next ID OraDatabase.ExecuteSQL (sqlstmt) OraDatabase.Parameters.Remove "id_num" Oracle Objects for OLE 13

Private Sub Command1_Click() sqlstmt = "select empno, ename from emp" Set OraDynaset = OraDatabase.CreateDynaset(sqlstmt, &H0&) 1 OraDynaset.Edit 2 OraDynaset.Fields(1).Value = "CLINTON" OraDynaset.Update 3 1. 2. 3. Oracle Objects for OLE 14

Oracle Objects for OLE 15

Oracle Objects for OLE 16

Oracle Objects for OLE 17

Oracle Objects for OLE 18

Oracle Objects for OLE 19

Oracle Objects for OLE 20

Oracle Objects for OLE 21

OO4O VB OO4O Oracle Fetch 1. SELECT (SELECT * FROM EMP) 2. SELECT 3. SELECT PGA ( ) 4. OO4O CreateDynaset FetchLimit (FetchLimit=10) ( 10 PGA 11 ) CreateDynaset 5. OraDynaset MoveNext 11 2 Fetch 11 20 Fetch PGA 21 Oracle Objects for OLE 22 ) (

Private Sub Form_Load() Set OraSession = CreateObject("OracleInprocServer.XOraSession") Set OraDatabase = OraSession.OpenDatabase("dms_tech803", _ "scott/tiger", &H0&) End Sub Public OraSession As OraSession Public OraDatabase As OraDatabase Oracle Objects for OLE 23

Set OraSession = CreateObject("OracleInprocServer.XOraSession") Set OraDatabase = OraSession.OpenDatabase("dms_tech803", _ "scott/tiger", &H0&) Set OraDatabase = Nothing Command5_Click() Oracle Private Sub Command5_Click() Dim OraDatabase1 As OraDatabase Set OraDatabase1 = OraSession.OpenDatabase("linux805", _ Oracle "scott/tiger", Objects 0&) for OLE End Sub 24

Oracle Objects for OLE 25

Oracle Objects for OLE 26

Oracle Objects for OLE 27

III. Oracle Objects for OLE 28

CREATE OR REPLACE PROCEDURE dynamic_sql (table_name_in IN VARCHAR2, v_pk IN NUMBER, v_name IN VARCHAR2) IS cursor_id INTEGER; rows_processed INTEGER; BEGIN cursor_id := DBMS_SQL.OPEN_CURSOR; DBMS_SQL.PARSE(cursor_id, 'INSERT INTO ' table_name_in ' VALUES (:v_pk, :v_name)', DBMS_SQL.NATIVE); DBMS_SQL.BIND_VARIABLE(cursor_id, 'v_pk', v_pk); DBMS_SQL.BIND_VARIABLE(cursor_id, 'v_name', v_name); rows_processed := DBMS_SQL.EXECUTE(cursor_id); DBMS_SQL.CLOSE_CURSOR(cursor_id); EXCEPTION WHEN OTHERS THEN DBMS_SQL.CLOSE_CURSOR(cursor_id); END; / Oracle Objects for OLE 29

Oracle Objects for OLE 30

CREATE OR REPLACE PROCEDURE UploadData(from_table IN VARCHAR2) AS v_id order_total.id%type; v_date order_total.order_date%type; v_quantity order_total.quantity%type; v_price order_total.price%type; sel_cursor INTEGER; ins_cursor INTEGER; s_row_processed INTEGER; i_row_processed INTEGER; sql_code NUMBER; sql_msg VARCHAR2(55); BEGIN sel_cursor := DBMS_SQL.OPEN_CURSOR; DBMS_SQL.PARSE(sel_cursor, 'SELECT id, order_date, quantity, price FROM ' from_table, dbms_sql.v7); DBMS_SQL.DEFINE_COLUMN(sel_cursor,1,v_id); DBMS_SQL.DEFINE_COLUMN(sel_cursor,2,v_date); DBMS_SQL.DEFINE_COLUMN(sel_cursor,3,v_quantity); DBMS_SQL.DEFINE_COLUMN(sel_cursor,4,v_price); Oracle Objects for OLE 31

Oracle Objects for OLE 32

CREATE TABLE TEST1( pk number(10) primary key, name varchar2(50) ); CREATE SEQUENCE test_pk1 INCREMENT BY 1 START WITH 1000; CREATE OR REPLACE TRIGGER trg_test1 BEFORE INSERT OR UPDATE on test1 FOR EACH ROW DECLARE icounter test1.pk%type; cannot_change_counter EXCEPTION; BEGIN IF INSERTING THEN SELECT test_pk1.nextval INTO icounter FROM dual; :new.pk := icounter; END IF; Oracle Objects for OLE 33

IF UPDATING THEN IF NOT (:new.pk = :old.pk) THEN RAISE cannot_change_counter; END IF; END IF; EXCEPTION WHEN cannot_change_counter THEN raise_application_error(-20000, 'Cannot Change Counter Value!'); END; INSERT INTO TEST1(name) VALUES('NAKASHIMA'); INSERT INTO TEST1(name) VALUES('KAWAKAMI'); INSERT INTO TEST1(name) VALUES('YAMADA'); INSERT INTO TEST1(name) VALUES('SUGAHARA'); INSERT INTO TEST1(name) VALUES('HAYASHI'); SQL> select * from test1; SQL> pk name SQL> ----- ------------ SQL> 1000 NAKASHIMA SQL> 1001 KAWAKAMI SQL> 1002 YAMADA SQL> 1003 SUGAHARA SQL> 1004 HAYASHI Oracle Objects for OLE 34

Private Sub Command1_Click() Dim sqlstmt As String Dim v_variable(3) As String Set OraSession = CreateObject("OracleInProcServer.XOraSession") Set OraDatabase = _ OraSession.OpenDatabase("linux805", "scott/tiger", 0&) sqlstmt = "select ename from emp where empno = 7698" Set OraDynaset = OraDatabase.CreateDynaset(sqlstmt, &H12&) Set OraFld1 = OraDynaset.Fields(0) v_variable = OraFld1.Value MsgBox v_variable Oracle Objects for OLE 35

Private Sub Command1_Click() Dim sqlstmt As String Dim v_variable(3) As String Set OraSession = CreateObject("OracleInProcServer.XOraSession") Set OraDatabase = _ OraSession.OpenDatabase("linux805", "scott/tiger", 0&) sqlstmt = "select ename from emp where empno = 7698" Set OraDynaset = OraDatabase.CreateDynaset(sqlstmt, &H12&) Set OraFld1 = OraDynaset.Fields(0) If IsNull(OraFld1.Value) Then v_variable = "" Else v_variable = OraFld1.Value End If MsgBox v_variable End Sub SQL> select empno, ename from emp where rownum <= 3; EMPNO ENAME ------- ---------- 7369 SMITH 7499 CLINTON 7521 WARD Oracle Objects for OLE 36

SQL> select empno, ename from emp; EMPNO ENAME -------- ---------- 7369 SMITH 7499 CLINTON 7521 WARD 7566 JONES 7654 MARTIN 7698 BLAKE 7782 CLARK 7788 SCOTT 7839 KING 7844 TURNER 7876 ADAMS 7900 JAMES 7910 KENJI EMPNO ENAME -------- ---------- 7876 ADAMS 7698 BLAKE 7782 CLARK Oracle Objects for OLE 37

Oracle Objects for OLE 38

SQL> select empno, ename, rownum from emp 2 where rownum <= 3 order by ename; EMPNO ENAME ROWNUM -------- ------------ --------- 7499 CLINTON 2 7369 SMITH 1 7521 WARD 3 Oracle Objects for OLE 39

Oracle Objects for OLE 40

SQL> SELECT A.EMPNO, A.ENAME, COUNT(B.ENAME) 2 FROM EMP A, EMP B 3 WHERE A.ENAME >= B.ENAME 4 GROUP BY A.EMPNO, A.ENAME; EMPNO ENAME COUNT(B.ENAME) --------- ---------- -------------- 7369 SMITH 11 7499 CLINTON 4 7521 WARD 13 7566 JONES 6 7654 MARTIN 9 7698 BLAKE 2 7782 CLARK 3 7788 SCOTT 10 7839 KING 8 7844 TURNER 12 7876 ADAMS 1 7900 JAMES 5 7910 KENJI 7 SQL> SELECT A.EMPNO, A.ENAME, COUNT(B.ENAME) 2 FROM EMP A, EMP B 3 WHERE A.ENAME >= B.ENAME 4 GROUP BY A.EMPNO, A.ENAME 5 HAVING COUNT(B.ENAME) <= 3; EMPNO ENAME COUNT(B.ENAME) --------- ---------- -------------- 7698 BLAKE 2 7782 CLARK 3 7876 ADAMS 1 Oracle Objects for OLE 41

Oracle Objects for OLE 42

SQL> SELECT A.EMPNO, A.ENAME 2 FROM EMP A, EMP B 3 WHERE A.ENAME >= B.ENAME 4 GROUP BY A.EMPNO, A.ENAME 5 HAVING COUNT(B.ENAME) <= 3 6 ORDER BY A.ENAME; EMPNO ENAME --------- ---------- 7876 ADAMS 7698 BLAKE 7782 CLARK HAVING COUNT(B.ENAME) <= 3 Oracle Objects for OLE 43

Oracle Objects for OLE 44

DROP TABLE TEST_DEFAULT; CREATE TABLE TEST_DEFAULT( ID NUMBER(5), TEST_DEF NUMBER(10) DEFAULT 10 ); INSERT INTO TEST_DEFAULT (ID, TEST_DEF) VALUES (1, 21); INSERT INTO TEST_DEFAULT (ID) VALUES (2); Set OraDatabase = OraSession.DbOpenDatabase("", "vb/vb", 0&) Oracle Objects for OLE 45

Private Sub Command4_Click() Dim sqlstmt As String sqlstmt = "select * from test_default" Set OraDynaset = OraDatabase.CreateDynaset(sqlstmt, &H0&) OraDynaset.AddNew OraDynaset.Fields(0).Value = 3 OraDynaset.Update End Sub SQL> SELECT * FROM TEST_DEFAULT; ID TEST_DEF --------- --------- 1 21 2 10 3 SQL> SELECT * FROM TEST_DEFAULT; ID TEST_DEF --------- --------- 1 21 2 10 3 10 Oracle Objects for OLE 46

Oracle Objects for OLE 47

Oracle Objects for OLE 48