Exzilla.net
Contact
Home -> Articles -> ADO and SP -> Using ADO calls a stored procedure for ASP Developer
 
Features
Forums
Files
Blogs
Using ADO calls a stored procedure for ASP Developer(single row return).
June 12, 2001
teddy
Author's Bio | E-Mail
Copyright (C) 2001 exzilla.net

 

Using ADO calls a stored procedure for ASP Developer(single row return).

Overview

ใน article นี้มีจุดประสงค์เพื่อ

    1. แสดงการเรียกใช้ Stored Procedure จาก ADO ซึ่งมี Parameter ที่ถูกเรียกใช้อยู่ 3 ตัว โดยที่ตัวแรกเป็น Input Parameter และอีกสองตัวเป็น output Parameter
    2. ในตัวอย่างสำหรับ Article นี้จะ return ข้อมูลกลับมาเพียง record เดียวเท่านั้น
    3. และตัวอย่างนี้จะมีการสร้างและเรียกใช้ Object เพียง 2 อย่างคือ ADODB.Connection และ ADODB.Command

System Environment

    1. Microsoft ODBC for Oracle (2.573.2927), version 2.5 หรือ Oracle ODBC Driver version 8.01.07.00
    2. Oracle Net8 8.1.7
    3. Oracle Database 8.1.7 for Microsoft Windows NT/2000
    4. Microsoft Windows 2000 with IIS5.0
    5. SQL*PLUS and Notepad

Download

    1. Oracle Database Software
    2. สามารถ Download ได้จาก http://otn.oracle.com/

    3. MDAC 2.x Stack ,which includes the 2.573 Driver

สามารถ Download ได้จาก http://www.microsoft.com/data/

 

Step-by-step to create a program

    1. Create sample table and data
    2. ในตัวอย่างนี้ผมขออนุญาตใช้ schema ของ scott ซึ่งมี table EMP ที่เป็น Demo table พร้อม data อยู่แล้วนะครับ

    3. Create the Stored Procedure on Oracle database server
    4. เริ่มจากขั้นตอนแรก เราจะสร้าง Stored Procedure ที่ฝั่ง Database กันก่อน โดยที่ Procedure ที่เราสร้างจะมีการรับค่า employee number มาเพื่อค้นหา name และ job จากนั้นก็ return กลับไปยัง calling environment (ซึ่งอาจเป็น ตัวแปรใน SQL Plus หรือ ASP ก็ได้)

      เริ่มต้นด้วยการเรียกใช้งาน SQL Plus เพื่อสร้าง Stored Procedure ดังนี้

      $ sqlplus scott/tiger@zeal

      SQL> create or replace procedure GetEmployeeDetails

      2 ( emp_id in number,fname out varchar2, job out varchar2)

      3 as

      4 begin

      5 select emp.ename, emp.job

      6 into fname, job

      7 from emp

      8 where

      9 emp.empno = emp_id;

      10 exception

      11 when no_data_found then

      12 fname := 'Unknown';

      13 job := 'Unknown';

      14 end;

      15 /

      Procedure created.

      SQL>

       

      ทดสอบ Stored procedure ที่เราสร้าง ด้วย SQL PLUS กันก่อน

      SQL> variable my_name varchar2(20)

      SQL> variable my_job varchar2(20)

      SQL> exec getEmployeeDetails(7902,:my_name,:my_job);

      PL/SQL procedure successfully completed.

      SQL> set serveroutput on

      SQL> print :my_name :my_job

      MY_NAME

      --------------------------------

      FORD

       

      MY_JOB

      --------------------------------

      ANALYST

      SQL>

       

      จากตัวอย่างด้านบน ก็เป็นการแสดงว่า Procedure ที่เราสร้างสามารถทำงานได้อย่างปกติ ถูกต้อง

       

    5. Create ASP program for call and retrieve data from Stored Procedure

Create connection Object

เริ่มจาก สร้าง ADODB.connection Object

Program ของเราในส่วนของ Connection ก็จะเป็นดังนี้

set conn = Server.CreateObject("ADODB.Connection")

conn.Open "dsn=zeal;uid=scott;password=tiger"

 

ซึ่งก็คือ ต้องการ สร้าง connection เพื่อติดต่อ กับ Oracle Database โดยใช้ user ชื่อ Scott มี password เป็น tiger โดยผ่าน connection String ชื่อ zeal ( ก่อนที่จะใช้งาน DSN ชื่อ zeal อย่าลืม "สร้าง DSN" ชื่อzeal กันก่อนนะครับ )

Create command Object

ในขั้นตอนนี้จะเป็นการ สร้าง Command Object เพื่อใช้ในการ เรียกใช้ Stored Procedure โดยเริ่มจาก Create Command Object และระบุว่าต้องการใช้งาน กับ connection อะไรกันก่อน

set cmd = Server.CreateObject("ADODB.Command")

set cmd.ActiveConnection = Conn

 

จากนั้น ก็เป็นการระบุชนิดของ commandType และ ชื่อ Stored Procedure ที่เรียกใช้งาน ซึ่งก็คือ GetEmployeeDetails

cmd.CommandText = "GetEmployeeDetails"

cmd.CommandType = adCmdStoredProc

 

(adCmdStoredProc ต้องมีการอธิบายไว้ใน file ADOVBS.inc อยู่ด้วยนะครับ)

 

Create Input and Output parameters

เนื่องจาก Stored Procedure ที่เราได้สร้างมานั้นจะมี parameter ตัวแรกเป็น input Parameter ส่วนที่เหลือก็เป็น Output Parameter

GetEmployeeDetails ( emp_id in number,fname out varchar2, job out varchar2)

ดังนั้น ในการ Coding เราจะมีการสร้าง parameter ด้วยกัน 3 parameter โดยที่ใน parameter ตัวแรกจะเป็น input Parameter และในตัวอย่างนี้ก็มีการกำหนดว่าเราต้องการ รายละเอียดของ employee ที่มี employee number เป็น 7902

set param1 = cmd.CreateParameter("EMPNO", adInteger, adParamInput, , 0)

cmd.Parameters.Append param1

'Get Employee detail for employee Number 7902

cmd.Parameters("EMPNO") = 7902

 

ส่วน Parameter ที่เหลืออีก 2 ก็จะเป็น output Parameter

Set Param2 = cmd.CreateParameter("ENAME", adBSTR, adParamOutPut, 10)

cmd.Parameters.Append param2

 

Set Param3 = cmd.CreateParameter("JOB", adBSTR, adParamOutPut, 9)

cmd.Parameters.Append param3

 

execute command Object

หลังจากกำหนดสิ่งต่าง ๆ กันครบแล้วก็ถึงเวลาสั่ง execute Store procedure ที่เราได้สร้างไว้

cmd.execute

 

Display output data to browser

ในการนำข้อมูล มาแสดงก็เพียงแต่ใช้ command Object และระบุ Parameter ตามลำดับที่เราต้องการ

Response.write(cmd.Parameters(0))

Response.write(cmd.Parameters(1))

Response.write(cmd.Parameters(2))

 

Close and unset all variable

และก่อนจะจบ Program ก็อย่าลืม Clear ตัวแปรและ Connection ต่าง ๆ ด้วยนะครับ

Conn.Close

Set Cmd = Nothing

Set Conn = Nothing

 

Complete Sample code:

ตัวอย่าง Code ที่สมบูรณ์ ที่นี่ ครับ

  1. Code สำหรับการสร้าง Store Procedure
  2. ASP Program เพื่อเรียกใช้ Stored Procedure

References:

Article ID: Q176086 from http://support.microsoft.com/

Oracle ODBC Driver Help File

Keywords:

ADO, Stored Procedure, command object, single row, Result Set

 
 
{exzilla.net -- e-development QuickStart --}



Copyright (c) 2001-2005 - Exzilla.net -  All Rights Reserved.
Contact Us | Privacy Policy | Terms & Conditions