home *** CD-ROM | disk | FTP | other *** search
/ Chip 2000 May / Chip_2000-05_cd1.bin / zkuste / Perl / ActivePerl-5.6.0.613.msi / 䆊䌷䈹䈙䏵-䞅䞆䞀㡆䞃䄦䠥 / _a535bfc55762f8d09baad1e48fe49a3a < prev    next >
Text File  |  2000-03-15  |  3KB  |  104 lines

  1. <%@ LANGUAGE = PerlScript%>
  2. <html>
  3. <head>
  4. <meta name="GENERATOR" content="Tobias Martinsson">
  5.  
  6. <title>ADO Stored Procedures</title>
  7. </head>
  8. <body>
  9. <BODY BGCOLOR=#FFFFFF>
  10.  
  11. <!-- 
  12.     ActiveState PerlScript sample 
  13.     PerlScript:  The coolest way to program custom web solutions. 
  14. -->
  15.  
  16. <!-- Masthead -->
  17. <TABLE CELLPADDING=3 BORDER=0 CELLSPACING=0>
  18. <TR VALIGN=TOP ><TD WIDTH=400>
  19. <A NAME="TOP"><IMG SRC="PSBWlogo.gif" WIDTH=400 HEIGHT=48 ALT="ActiveState PerlScript" BORDER=0></A><P>
  20. </TD></TR></TABLE>
  21.  
  22. <HR>
  23.  
  24. <H3>ActiveX Data Objects (ADO) Stored Procedures</H3>
  25. Calling stored procedures can be done with the Command object. Store the name of the procedure in a scalar variable, set the ActiveConnection-property to either a Connection object or a valid ConnectionString and then specify the stored procedure to run and specify that the Commandis a stored procedure. The stored procedure used is named "get_customer" and looks as follows:
  26. <PRE>
  27. CREATE PROCEDURE get_customer @cust_id nchar(5)
  28. AS
  29. SELECT * FROM Customers WHERE CustomerID=@cust_id
  30. </PRE>
  31. It is written for the Northwind database, and to work with the parameters, from ADO you call <B>Refresh()</B> to get the Parameters that the stored procedure call takes, then set a valid value, and execute the procedure. The example was written for the Northwind database on SQL Server 7.0 and 2000, but can easily be modified to work with other databases.
  32. <BR><BR>
  33. <B>Output from stored procedure:</B><BR>
  34. <%
  35. # Import the constants
  36. #
  37. use Win32::OLE::Const 'Microsoft ActiveX Data Objects 2.5';
  38.  
  39. # Set the name of the stored procedure to run
  40. #
  41. $stored_procedure = "get_customer";
  42.  
  43. # Create the Command object
  44. #
  45. $cmd = $Server->CreateObject('ADODB.Command');
  46.  
  47. # Set the string used to connect to the database
  48. #
  49. $cmd->{ActiveConnection} = (<<EOF);
  50.     Provider=SQLOLEDB;
  51.     Persist Security Info=False;
  52.     User ID=sa;
  53.     Initial Catalog=Northwind
  54. EOF
  55.  
  56. # The text of the command to execute
  57. #
  58. $cmd->{CommandText} = $stored_procedure;
  59.  
  60. # The type of the command -- will not work without it
  61. #
  62. $cmd->{CommandType} = adCmdStoredProc; # Very important
  63.  
  64. # Refresh the parameters collection so that you have all parameters available
  65. #
  66. $cmd->Parameters->Refresh();
  67.  
  68. # Set the value of the parameter to use
  69. #
  70. $cmd->Parameters('@cust_id')->{Value}='ALFKI';
  71.  
  72. # Execute the Command
  73. #
  74. $rst = $cmd->Execute();
  75.  
  76. # Get the number of fields
  77. #
  78. $count = $rst->Fields->{Count};
  79.  
  80. # Loop the fields
  81. #
  82. for(my $i=0; $i<$count; $i++) {
  83.     $Response->Write($rst->Fields($i)->{Name});
  84.     $Response->Write(": ");
  85.     $Response->Write($rst->Fields($i)->{Value});
  86.     $Response->Write("<BR>");
  87. }
  88.  
  89. undef($cmd);
  90. %>
  91.  
  92. <%
  93.     $url = $Request->ServerVariables('PATH_INFO')->item;
  94.     $_ = $Request->ServerVariables('PATH_TRANSLATED')->item;
  95.     s/[\/\\](\w*\.asp\Z)//m;
  96.     $params = 'filename='."$1".'&URL='."$url";
  97.     $params =~ s#([^a-zA-Z0-9&_.:%/-\\]{1})#uc '%' . unpack('H2', $1)#eg;
  98. %>
  99. <BR><BR>
  100. <A HREF="index.htm"> Return </A>
  101. <A HREF="showsource.asp?<%=$params%>">
  102. <h4><i>view the source</i></h4></A>  
  103. </BODY>
  104. </HTML>