การเรียนรู้ที่จะใช้ขั้นตอนที่เก็บไว้เป็นหนึ่งในหลักสูตรที่โปรแกรมเมอร์ ASP ต้องเรียนรู้ ฐานข้อมูลขนาดใหญ่ทั้งหมดสนับสนุนขั้นตอนที่เก็บไว้ บทความของวันนี้เป็นคอลเลกชันที่สมบูรณ์ของการใช้ขั้นตอนการจัดเก็บ ASP ที่แบ่งปันโดยบรรณาธิการของบรรณาธิการเทคโนโลยีใหม่ ไปที่บทความต่อไปนี้เพื่อเรียนรู้เพิ่มเติม!
1. การโทรขั้นตอนที่เก็บไว้โดยไม่มีพารามิเตอร์
-
ตั้งค่า conn = server.createObject ("adodb.connection"))
ตั้งค่า cmd = server.createObject ("adodb.command"))
strConn = "dsn = pubs; uid = sa; pwd"
conn.open strconn
ตั้งค่า cmd.activeConnection = conn
cmd.CommandText = "{call nono}"
'ตั้งค่า rs = cmc.exe หรือ cmd.execute
ตั้งค่า rs = cmd.execute ()
-
2. ขั้นตอนที่เก็บไว้สำหรับพารามิเตอร์อินพุต
-
ตั้งค่า conn = server.createObject ("adodb.connection"))
ตั้งค่า cmd = server.createObject ("adodb.command"))
strConn = "dsn = pubs; uid = sa; pwd"
conn.open strconn
ตั้งค่า cmd.activeConnection = conn
cmd.CommandText = "{call oneInput (?)}"
cmd.parameters.append cmd.createparameter ("@aaa", Adinteger, adparaminput)
cmd ("@aaa") = 100
cmd.execute ()
-
3. พารามิเตอร์อินพุตและพารามิเตอร์เอาต์พุต
-
ตั้งค่า conn = server.createObject ("adodb.connection"))
ตั้งค่า cmd = server.createObject ("adodb.command"))
strConn = "dsn = pubs; uid = sa; pwd"
conn.open strconn
ตั้งค่า cmd.activeConnection = conn
cmd.CommandText = "{call oneinout (?,?)}"
cmd.parameters.append cmd.createparameter ("@aaa", Adinteger, adparaminput)
cmd ("@aaa") = 10
cmd.parameters.append cmd.createparameter ("@bbb", adinteger, adparamoutput)
cmd.execute ()
bbb = cmd ("@bbb")
-
4. พารามิเตอร์อินพุตหนึ่งตัวพารามิเตอร์เอาต์พุตหนึ่งตัวและค่าส่งคืนหนึ่งค่า
-
ตั้งค่า conn = server.createObject ("adodb.connection"))
ตั้งค่า cmd = server.createObject ("adodb.command"))
strConn = "dsn = pubs; uid = sa; pwd"
conn.open strconn
ตั้งค่า cmd.activeConnection = conn
cmd.CommandText = "{? = เรียก oneereturn (?,?)}"
cmd.parameters.append cmd.createparameter ("@return_value", adinteger, adparamreturnvalue)
cmd.parameters.append cmd.createparameter ("@aaa", Adinteger, adparaminput)
cmd ("@aaa") = 10
cmd.parameters.append cmd.createparameter ("@bbb", adinteger, adparamoutput)
cmd.execute ()
bbb = cmd ("@bbb")
rrr = cmd ("@return_value")
-
วิธีเรียกขั้นตอนการจัดเก็บ SQL ใน ASP
www.lucky365.net 2002-2-7 Jixiang365
<%set connection1 = server.createObject ("adodb.connection")
Connection1.Open ... 'เข้าร่วม
ตั้งค่า command1 = server.createObject ("AdoDB.Command"))
SET Command1.activeConnection = การเชื่อมต่อ 1
Command1.CommandType = 4
command1.CommandText = "sp_1" 'sp
Command1.Parameters (1) = ... 'ค่าพารามิเตอร์
Command1.Parameters (2) = ...
ตั้งค่า recordSet1 = command1.execute ()
-
เคล็ดลับสำหรับขั้นตอนการโทร ASP ที่เก็บไว้
1. สิ่งที่ง่ายที่สุดมีดังนี้
สลัว objconn
ตั้งค่า objconn = server.createObject ("adobd.connection"))
แอปพลิเคชัน objconn.open ("connection_string")
'เรียกขั้นตอนที่เก็บไว้เพื่อเพิ่มตัวนับบนหน้า
objconn.execute "exec sp_addhit"
ไม่มีพารามิเตอร์ไม่มีการส่งคืนไม่มีการจัดการข้อผิดพลาดใช่
2. การโทรด้วยพารามิเตอร์
objconn.execute "exec sp_addhit 'http://www.aspalliance.com', 1"
โปรดทราบว่าพารามิเตอร์แยกจะไม่ถูกส่งกลับไปยังระเบียน
3. กลับไปที่บันทึก
สลัว objconn
dim objrs
ตั้งค่า objconn = server.createObject ("adobd.connection"))
ตั้งค่า objrs = server.createObject ("adobd.recordset"))
แอปพลิเคชัน objconn.open ("connection_string")
'เรียกขั้นตอนที่เก็บไว้เพื่อเพิ่มตัวนับบนหน้า
objrs.open objconn, "exec sp_listarticles '1/15/2001'"
'วนลูปผ่าน Recordset และแสดงแต่ละบทความ
4 ....
สลัว objconn
สลัว objcmd
'อินสแตนซ์วัตถุ
ตั้งค่า objconn = server.createObject ("adodb.connection"))
ตั้งค่า objcmd = server.createObject ("adodb.command"))
แอปพลิเคชัน conn.open ("ConnectionString")
ด้วย objcmd
.activeConnection = Conn 'คุณยังสามารถระบุสตริงการเชื่อมต่อได้ที่นี่
.CommandText = "sp_insertarticle"
.CommandType = ADCMDSTOREDPROC 'ต้องการไฟล์ ADOVBS.INC หรือ Typelib Meta Tag
'เพิ่มพารามิเตอร์อินพุต
.Parameters.Append .CreateParameter ("@columnist_id", addouble, adparaminput ,, คอลัมน์ _id)
.Parameters.Append .CreateParameter ("@url", Advarchar, Adparaminput, 255, URL)
.Parameters.Append .CreateParameter ("@title", Advarchar, Adparaminput, 99, URL)
.Parameters.Append .CreateParameter ("@Description", Adlongvarchar, _
Adparaminput, 2147483647, คำอธิบาย)
'เพิ่มพารามิเตอร์เอาต์พุต
.Parameters.Append .CreateParameter ("@link_id", Adinteger, adparamoutput ,, 0)
'ดำเนินการฟังก์ชั่น
'หากไม่ส่งคืนชุดบันทึกให้ใช้ตัวเลือกพารามิเตอร์ adexecutenorecords
.Execute ,, adexecutenorecords
link_id = .parameters ("@link_id")
จบลงด้วย
5. รหัสขั้นตอนที่เก็บไว้
สร้างขั้นตอน dbo.sp_insertarticle
-
@columnist_id int,
@url varchar (255)
@title varchar (99)
@Description Text
@link_id เอาต์พุต int
-
เช่น
เริ่ม
แทรกลงใน dbo.t_link (columnist_id, url, ชื่อ, คำอธิบาย)
ค่า (@columnist_id,@url,@title,@คำอธิบาย)
เลือก @link_id = @@ ตัวตน
จบ
หลายวิธีในการเรียกขั้นตอนที่เก็บไว้ด้วยพารามิเตอร์
เมื่อเร็ว ๆ นี้เพื่อนหลายคนได้ถามคำถามเกี่ยวกับการโทรขั้นตอนที่เก็บไว้ นี่คือการแนะนำสั้น ๆ เกี่ยวกับวิธีการหลายวิธีของ ASP การเรียกขั้นตอนที่เก็บไว้พร้อมพารามิเตอร์
1 นี่เป็นวิธีที่ง่ายที่สุดด้วยพารามิเตอร์อินพุตสองตัวไม่มีค่าส่งคืน:
Set Connection = Server.CreateObject ("ADODB.Connection")
Connection.open somedsn
Connection.execute "Procname varvalue1, varvalue2"
'' ล้างวัตถุทั้งหมดให้เป็นทรัพยากรฟรีฟรี
Connection.close
ตั้งค่าการเชื่อมต่อ = ไม่มีอะไร
2 หากคุณต้องการส่งคืนชุด recordset:
Set Connection = Server.CreateObject ("ADODB.Connection")
Connection.open somedsn
ตั้งค่า rs = server.createObject ("adodb.recordset"))
Rs.Open "Exec Procname Varvalue1, varvalue2", การเชื่อมต่อ
'' ล้างวัตถุทั้งหมดให้เป็นทรัพยากรฟรีฟรี
Rs.close
Connection.close
ตั้งค่า rs = ไม่มีอะไร
ตั้งค่าการเชื่อมต่อ = ไม่มีอะไร
3 สองวิธีข้างต้นไม่สามารถมีค่าส่งคืน (ยกเว้น recordSet) หากคุณต้องการได้รับค่าส่งคืนคุณจะต้องใช้วิธีคำสั่ง
ก่อนอื่นมีค่าส่งคืนสองประเภท หนึ่งคือการส่งคืนค่าโดยตรงในขั้นตอนที่เก็บไว้เช่นเดียวกับฟังก์ชั่นของค่าส่งคืน C และ VB; อีกอย่างคือการคืนค่าหลายค่า
ชื่อตัวแปรที่เก็บค่าเหล่านี้จะต้องระบุก่อนในพารามิเตอร์การโทร
ตัวอย่างนี้จะจัดการกับพารามิเตอร์หลายตัวพารามิเตอร์อินพุตพารามิเตอร์เอาท์พุทชุดเรคคอร์ดส่งคืนและค่าส่งคืนโดยตรง (ทั้งหมดเพียงพอหรือไม่)
ขั้นตอนที่เก็บไว้มีดังนี้:
ใช้ผับ
ไป
- สร้างขั้นตอนที่เก็บไว้
สร้างขั้นตอน sp_pubstest
- กำหนดตัวแปรพารามิเตอร์สามตัวจดบันทึกตัวที่สามเครื่องหมายพิเศษจะใช้สำหรับเอาต์พุต
@au_lname varchar (20)
@intid int,
@intidout เอาต์พุต int
เช่น
เลือก @intidout = @intid + 1
เลือก *
จากผู้เขียน
โดยที่ au_lname ชอบ @au_lname + ''%''
-ส่งคืนค่าโดยตรง
return @intid + 2
โปรแกรม ASP ที่เรียกขั้นตอนที่เก็บไว้มีดังนี้:
< %@ language = vbscript %>
-
Dim CMDSP
หม
dim adcmdspstoredproc
สลัว adparamreturnvalue
Dim adparaminput
Dim adparamoutput
อดิเรกสลัว
หรอก
หม
หม
Dim Advarchar
'ค่าเหล่านี้เป็นค่าคงที่ที่กำหนดไว้ล่วงหน้าใน VB และสามารถเรียกได้โดยตรง แต่ไม่ได้กำหนดไว้ล่วงหน้าใน VBScript
ADCMDSPSTOREDPROC = 4
adparamreturnValue = 4
adparaminput = 1
adparamoutput = 2
Adinteger = 3
advarchar = 200
IVAL = 5
รูปไข่ = 3
'' สร้างวัตถุคำสั่ง
ตั้งค่า cmdsp = server.createObject ("adodb.command"))
'' สร้างลิงค์
cmdsp.activeConnection = "driver = {sql server}; server = (local); uid = sa; pwd =; database = pubs"
'' กำหนดชื่อการเรียกวัตถุคำสั่ง
cmdsp.commandtext = "sp_pubstest"
'' ตั้งค่าประเภทการเรียกคำสั่งเป็นขั้นตอนที่เก็บไว้ (ADCMDSPSTOREDPROC = 4)
CMDSP.CommandType = ADCMDSPSTORDPROC
'' เพิ่มพารามิเตอร์ลงในวัตถุคำสั่ง
'' กำหนดขั้นตอนที่เก็บไว้มีค่าส่งคืนโดยตรงและเป็นจำนวนเต็มค่าเริ่มต้นคือ 4
cmdsp.parameters.append cmdsp.createparameter ("return_value", adinteger, adparamreturnvalue, 4)
'' กำหนดพารามิเตอร์อินพุตอักขระ
cmdsp.parameters.append cmdsp.createparameter ("@au_lname", advarchar, adparaminput, 20, "m")
'' กำหนดพารามิเตอร์อินพุตจำนวนเต็ม
cmdsp.parameters.append cmdsp.createparameter ("@intid", adinteger, adparaminput ,, ival)
'' กำหนดพารามิเตอร์เอาต์พุตจำนวนเต็ม
cmdsp.parameters.append cmdsp.createparameter ("@intidout", adinteger, adparamoutput, รูปไข่)
'' เรียกใช้โพรซีเดอร์ที่เก็บไว้และรับชุดเรคคอร์ดส่งคืน
ตั้งค่า adors = cmdsp.execute
'' พิมพ์แต่ละระเบียนออกฟิลด์ในนั้นเป็นเสมือนคุณสามารถเพิกเฉยได้
ในขณะที่ไม่ใช่ adors.eof
สำหรับแต่ละ adofield ใน adors.fields
Response.write adofield.name & "=" & adofield.value & "
"& vbcrlf
ต่อไป
Response.write "
-
Adors.movenext
ใช้
'' พิมพ์ค่าเอาต์พุตสองค่า:
Response.write "
@intidout = "& cmdsp.parameters ("@intidout "). ค่า &"
-
Response.write "
return value = "& cmdsp.parameters (" return_value "). ค่า &"
-
'' การทำความสะอาดครั้งใหญ่
ตั้งค่า adors = ไม่มีอะไร
ตั้งค่า cmdsp.activeConnection = ไม่มีอะไร
ตั้งค่า cmdsp = ไม่มีอะไร
-
มีวิธีอื่น ๆ ซึ่งจะปิดเล็กน้อยและฉันจะพูดถึงมันในภายหลัง
บทความนี้ได้อ้างอิงบทความจำนวนมากและจะไม่ถูกระบุไว้ที่นี่
ใช้ขั้นตอนที่เก็บไว้ใน ASP
เพื่อปรับปรุงประสิทธิภาพของโปรแกรม ASP บางครั้งจำเป็นต้องใช้เทคโนโลยีการจัดเก็บโดยใช้ SQL Server ใน ASP นี่คือการแนะนำสั้น ๆ
การจัดตั้งขั้นตอนที่เก็บไว้
นี่คือการแนะนำสั้น ๆ เกี่ยวกับวิธีการสร้างขั้นตอนที่เก็บไว้ในองค์กรผู้จัดการของ SQL Server:
(1) Open Enterprise Manager
(2) เลือกกลุ่มเซิร์ฟเวอร์ (กลุ่มเซิร์ฟเวอร์ SQL), เซิร์ฟเวอร์, ฐานข้อมูล (ฐานข้อมูล) และฐานข้อมูลที่เกี่ยวข้องคลิกขวาที่รายการ procdures ที่เก็บไว้ภายใต้ฐานข้อมูลที่เกี่ยวข้องเลือกขั้นตอนใหม่ที่เก็บไว้ในเมนูป๊อปอัพและป้อนคำสั่งเพื่อสร้างขั้นตอนที่เก็บไว้ นี่คือตัวอย่าง:
สร้างขั้นตอน proctest @mycola char (10),@mycolb char (10),@mycolc text เป็น
แทรกลงใน chatdata (mycola, mycolb, mycolc) ค่า (@mycola,@mycolb,@mycolc)
ในเอกสารของ SQL Server ไวยากรณ์คือ:
สร้าง proc [edure] procedure_name [; number] [
{@parameter data_type} [แตกต่างกัน] [= ค่าเริ่มต้น] [เอาท์พุท]]
[, ... n] [ด้วย {recompile | การเข้ารหัส
- recompile, encryption}] [สำหรับการจำลองแบบ]
sql_statement [... n]
หากคุณไม่คุ้นเคยกับไวยากรณ์ SQL คุณสามารถใช้ Check Syntax เพื่อตรวจสอบไวยากรณ์ ในตัวอย่างข้างต้นหมายความว่าขั้นตอนที่เก็บไว้นั้นถูกสร้างขึ้นด้วยขั้นตอนที่เก็บไว้ชื่อ Mycola และ 3 พารามิเตอร์ ชนิดข้อมูลพารามิเตอร์แรกของ mycola คือถ่านและความกว้าง 10; ชนิดข้อมูลพารามิเตอร์ที่สองคือถ่านและความกว้าง 10 และชนิดข้อมูลพารามิเตอร์ที่สามคือข้อความ นี่คือประเภทข้อมูลของ SQL Server
หลังจากกำหนดขั้นตอนที่เก็บไว้แล้วสิ่งต่อไปนี้คือวิธีการเรียกขั้นตอนการจัดเก็บในโปรแกรม ASP: เพื่อปรับปรุงประสิทธิภาพของโปรแกรม ASP บางครั้งจำเป็นต้องใช้เทคโนโลยีการจัดเก็บโดยใช้ SQL Server ใน ASP นี่คือวิธีง่ายๆในการเพิ่มพารามิเตอร์ในคำสั่งด้านบน P.Append CM.CreateParameter ("@mycolc", 201, 1, 250), รูปแบบคือ:
P.Append CM.CreateParameter ("ชื่อพารามิเตอร์", ประเภท, ทิศทาง, ขนาด)
ความหมายของประเภทของค่าพารามิเตอร์มีดังนี้:
ฟังก์ชันค่าจำนวนเต็มชื่อ
Addbtimestamp 135 วันที่และเวลาประเภทข้อมูล
addecimal 14 ค่าจำนวนเต็มทศนิยม
addouble 5 ค่าทศนิยมความแม่นยำสองเท่า
ข้อความแสดงข้อผิดพลาดของระบบ Aderror 10
Adguid 72 ตัวระบุที่ไม่ซ้ำกันทั่วโลก
addispath 9 com/ole วัตถุอัตโนมัติ (วัตถุอัตโนมัติ)
Adinteger 3 4-byte Signed Integer
adiunknown 13 com/ole วัตถุ
Adlongvarbinary 205 ค่า 2 ไบต์ขนาดใหญ่
Adlongvarchar 201 ค่าสตริงขนาดใหญ่
Adlongvarwchar 203 สตริงที่ไม่ได้เข้ารหัสขนาดใหญ่
Adnumeric 131 ค่าจำนวนเต็มทศนิยม
Adsingle 4 ทศนิยมจุดลอยเดี่ยว
Adsmallint 2 2-BYTE SIGNED INTEGER
Adtinyint 16 1 Byte Signed Integer
Adunsignedbigint 21 8-byte ที่ไม่ได้ลงนาม
Adunsignedint 19 4-byte ที่ไม่ได้ลงนาม
AdunsignedSmallint 18 จำนวนเต็ม 2-byte ที่ไม่ได้ลงนาม
AdunsignedTinyint 17 1 ไบต์ที่ไม่ได้ลงนาม
AduserDefined ประเภทข้อมูลที่ผู้ใช้กำหนด 132
Advariant 12 Ole Object
Advarbinary 204 Double Byte Character Valiable Value
ค่าตัวแปรอักขระ Advarchar 200
Advarchar 202 ค่าตัวแปรสตริงที่ไม่ได้เข้ารหัส
adwchar 130 สตริงที่ไม่ได้เข้ารหัส
ความหมายของค่าทิศทางมีดังนี้:
ฟังก์ชันค่าจำนวนเต็มชื่อ
AdParamInput 1 อนุญาตให้ป้อนข้อมูลลงในพารามิเตอร์นี้
AdParamoutput 2 อนุญาตให้ข้อมูลเป็นเอาต์พุตไปยังพารามิเตอร์นี้
AdParamInputOutput 3 อนุญาตให้ป้อนข้อมูลและเอาต์พุตไปยังพารามิเตอร์นี้
adparamreturnvalue 4 อนุญาตให้ส่งข้อมูลจากรูทีนย่อยไปยังพารามิเตอร์นี้
ข้างต้นเป็นคอลเลกชันที่สมบูรณ์ของการใช้ขั้นตอนการจัดเก็บ ASP ที่รวบรวมโดยบรรณาธิการของช่องเทคโนโลยีใหม่ที่ไม่ถูกต้อง ฉันหวังว่ามันจะช่วยการเรียนรู้ของคุณ!