|
Using ADO calls
a stored procedure for ASP Developer(single row return).
Overview
ใน article นี้มีจุดประสงค์เพื่อ
- แสดงการเรียกใช้ Stored Procedure จาก ADO ซึ่งมี Parameter
ที่ถูกเรียกใช้อยู่ 3 ตัว โดยที่ตัวแรกเป็น Input Parameter
และอีกสองตัวเป็น output Parameter
- ในตัวอย่างสำหรับ Article นี้จะ return ข้อมูลกลับมาเพียง
record เดียวเท่านั้น
- และตัวอย่างนี้จะมีการสร้างและเรียกใช้ Object เพียง 2 อย่างคือ
ADODB.Connection และ ADODB.Command
System Environment
- Microsoft ODBC for Oracle (2.573.2927), version 2.5 หรือ
Oracle ODBC Driver version 8.01.07.00
- Oracle Net8 8.1.7
- Oracle Database 8.1.7 for Microsoft Windows NT/2000
- Microsoft Windows 2000 with IIS5.0
- SQL*PLUS and Notepad
Download
- Oracle Database Software
สามารถ Download ได้จาก http://otn.oracle.com/
- MDAC 2.x Stack ,which includes the 2.573 Driver
สามารถ Download ได้จาก http://www.microsoft.com/data/
Step-by-step to
create a program
- Create sample
table and data
ในตัวอย่างนี้ผมขออนุญาตใช้ schema ของ scott ซึ่งมี table
EMP ที่เป็น Demo table พร้อม data อยู่แล้วนะครับ
- Create the
Stored Procedure on Oracle database server
เริ่มจากขั้นตอนแรก เราจะสร้าง 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 ที่เราสร้างสามารถทำงานได้อย่างปกติ
ถูกต้อง
- 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 ที่เราได้สร้างไว้
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 ที่สมบูรณ์ ที่นี่ ครับ
- Code สำหรับการสร้าง
Store Procedure
- 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
|