I checked a large amount of relevant materials at the beginning and found that many of the methods provided in them were not the same in practice. For simple applications, these materials may be helpful, but they are limited to this, because they are all the same, copy each other, and use a little more complex.
Now, I basically access SQL Server by calling the stored procedure. The following words are a summary of the practices and hope to help you.
A stored procedure is one or more SQL commands stored as executable objects in the database.
Definition is always abstract. The stored procedure is actually a set of SQL statements that can complete certain operations, but these statements are stored in the database (Here we only talk about SQL Server ). If we create a stored procedure and call the stored procedure in ASP, we can avoidCode. There are at least three advantages:
First, greatly improve efficiency. Stored procedures are executed very quickly, and calling stored procedures can greatly reduce the number of interactions with the database.
Second, improve security. If SQL statements are mixed in ASP code, once the code is out of password, it also means that the database structure is out of password.
Third, it is conducive to the reuse of SQL statements.
In ASP, the stored procedure is generally called through the command object. Based on different situations, this article also introduces other calling methods. For convenience, the following simple classification is made based on the input and output of the stored procedure:
1. Only the stored procedure of a single record set is returned.
Suppose there are the following stored procedures (the purpose of this article is not to describe the T-SQL syntax, so the stored procedure only gives code, not to mention ):
Reference content is as follows: /* SP1 */ Create procedure DBO. getuserlist As Set nocount on Begin Select * From DBO. [userinfo] End Go |
The above Stored Procedure Retrieves all records in the userinfo table and returns a record set. The ASP code for calling the stored procedure through the command object is as follows:
Reference content is as follows: ** Call the stored procedure through the command object ** Dim mycomm, myrst Set mycomm = server. Createobject ("ADODB. Command ") Mycomm. activeconnection = myconstr 'myconstr is the database connection string Mycomm. commandtext = "getuserlist" 'specifies the name of the stored procedure. Mycomm. commandtype = 4 'indicates that this is a stored procedure Mycomm. Prepared = true 'requires that the SQL command be compiled first Set myrst = mycomm. Execute Set mycomm = nothing |
The set of records obtained by the stored procedure is assigned to myrst. Next, you can operate on myrst.
In the preceding code, the commandtype attribute indicates the request type. The values and descriptions are as follows:
-1 indicates that the commandtext parameter type cannot be determined
1 indicates that commandtext is a common command type
2. The commandtext parameter is an existing table name.
4. The commandtext parameter is the name of a stored procedure.
You can also call the stored procedure through the connection object or recordset object. The methods are as follows:
'** Call the stored procedure through the connection object **
Dim myconn, myrst
Set myconn = server. Createobject ("ADODB. Connection ")
Myconn. Open myconstr 'myconstr is the database connection string
Set myrst = myconn. Execute ("getuserlist",) 'the last parameter is the same as commandtype
Set myconn = nothing
'** Call the stored procedure through the recordset object **
Dim myrst
Set myrst = server. Createobject ("ADODB. recordset ")
Myrst. Open "getuserlist", myconstr, 0, 1, 4
'Myconstr is the database connection string. The last parameter is of the same meaning as commandtype.
2. Stored Procedure without input/output
See the following stored procedure:
Reference content is as follows: /* SP2 */ Create procedure DBO. deluserall As Set nocount on Begin Delete from DBO. [userinfo] End Go |
In this stored procedure, all records in the userinfo table are deleted without any input or output. The Calling method is basically the same as described above, but the record set is not required:
'** Call the stored procedure through the command object **
Dim mycomm
Set mycomm = server. Createobject ("ADODB. Command ")
Mycomm. activeconnection = myconstr 'myconstr is the database connection string
Mycomm. commandtext = "deluserall" 'specifies the name of the stored procedure
Mycomm. commandtype = 4 'indicates that this is a stored procedure
Mycomm. Prepared = true 'requires that the SQL command be compiled first
Mycomm. Execute 'you do not need to retrieve the record set here
Set mycomm = nothing
Of course, this type of stored procedure can also be called through the connection object or recordset object, but the recordset object is created to obtain the record set. If no record set is returned, use the command object.
3. Stored Procedures with returned values
When performing SP2-like operations, SQL Server's powerful transaction processing functions should be fully utilized to maintain data consistency. In addition, we may need to return the execution status of the stored procedure. For this reason, modify SP2 as follows:
Reference content is as follows: /* SP3 */ Create procedure DBO. deluserall As Set nocount on Begin Begin transaction Delete from DBO. [userinfo] If @ error = 0 Begin Commit transaction Return 1 End Else Begin Rollback transaction Return 0 End Return End Go |
In the preceding stored procedure, 1 is returned when the delete operation is executed successfully. Otherwise, 0 is returned and the rollback operation is performed. To obtain the return value in ASP, you must use the parameters set to declare the parameter:
'** Call a stored procedure with a returned value and obtain the returned value **
Dim mycomm, mypara
Set mycomm = server. Createobject ("ADODB. Command ")
Mycomm. activeconnection = myconstr 'myconstr is the database connection string
Mycomm. commandtext = "deluserall" 'specifies the name of the stored procedure
Mycomm. commandtype = 4 'indicates that this is a stored procedure
Mycomm. Prepared = true 'requires that the SQL command be compiled first
'Declared Return Value
Set mypara = mycomm. createparameter ("return", 2, 4)
Mycomm. Parameters. append mypara
Mycomm. Execute
'Get the return value
Dim retvalue
Retvalue = mycomm (0) 'or retvalue = mycomm. parameters (0)
Set mycomm = nothing
In mycomm. createparameter ("return", 2, 4), the meanings of parameters are as follows:
The first parameter ("Reture") is the parameter name. The parameter name can be set arbitrarily, but it should be the same as the parameter name declared in the stored procedure. Here is the return value. I used to set it to "Reture ";
The second parameter (2) indicates the Data Type of the parameter. For details about the type code, see the ADO reference. The following describes the common type code:
Reference content is as follows: Adbigint: 20; Adbinary: 128; Adboolean: 11; Adchar: 129; Addbtimestamp: 135; Adempty: 0; Adinteger: 3; Adsmallint: 2; Adtinyint: 16; Advarchar: 200; |
For return values, only integer values can be taken and-1 to-99 are reserved values;
The third parameter (4) indicates the nature of the parameter. Here 4 indicates that this is a return value. The value of this parameter is described as follows:
0: The type cannot be determined; 1: input parameter; 2: input parameter; 3: input or output parameter; 4: Return Value
The above ASP code should be the complete code, that is, the most complex code. In fact
Set mypara = mycomm. createparameter ("return", 2, 4)
Mycomm. Parameters. append mypara
Can be simplified
Mycomm. Parameters. append mycomm. createparameter ("return", 2, 4)
It can even be simplified and will be explained later.
For stored procedures with parameters, you can only use the command object to call (it can also be called through the connection object or recordset object, but I have not tried it ).
4. Stored Procedures with Input and Output Parameters
The returned value is actually a special output parameter. In most cases, we use a stored procedure with both input and output parameters. For example, if we want to obtain the username of an ID in the user information table, there is an input parameter ---- user ID, and an output parameter ---- user name. The stored procedure for implementing this function is as follows:
Reference content is as follows: /* SP4 */ Create procedure DBO. GetUserName @ Userid int, @ Username varchar (40) Output As Set nocount on Begin If @ userid is null return Select @ username = Username From DBO. [userinfo] Where userid = @ userid Return End Go |
The ASP code for calling the stored procedure is as follows:
'** Call the stored procedure with input and output parameters **
Dim mycomm, userid, username
Userid = 1
Set mycomm = server. Createobject ("ADODB. Command ")
Mycomm. activeconnection = myconstr 'myconstr is the database connection string
Mycomm. commandtext = "GetUserName" 'specifies the name of the stored procedure.
Mycomm. commandtype = 4 'indicates that this is a stored procedure
Mycomm. Prepared = true 'requires that the SQL command be compiled first
'Declare Parameters
Mycomm. Parameters. append mycomm. createparameter ("@ userid", 3, 1, 4, userid)
Mycomm. Parameters. append mycomm. createparameter ("@ username", 40)
Mycomm. Execute
'Get output parameter
Username = mycomm (1)
Set mycomm = nothing
In the above code, we can see that, unlike the declared return value, five parameters are required for declaring input parameters, and four parameters are required for declaring output parameters. When declaring input parameters, the five parameters are: Parameter Name, parameter data type, parameter type, data length, and parameter value. When declaring output parameters, there is no last parameter: parameter value.
Note: When declaring parameters, the order must be the same as that defined in the stored procedure, the data type and length of each parameter must be the same as that defined in the stored procedure.
If the stored procedure has multiple parameters, the ASP code is cumbersome. You can use the with command to simplify the Code:
'** Call a stored procedure with input and output parameters (simplified code )**
Dim mycomm, userid, username
Userid = 1
Set mycomm = server. Createobject ("ADODB. Command ")
With mycomm
. Activeconnection = myconstr 'myconstr is the database connection string
. Commandtext = "GetUserName" 'specifies the name of the stored procedure
. Commandtype = 4' indicates that this is a stored procedure
. Prepared = true' requires that the SQL command be compiled first
. Parameters. append. createparameter ("@ userid", 3, 1, 4, userid)
. Parameters. append. createparameter ("@ username", 40)
. Execute
End
Username = mycomm (1)
Set mycomm = nothing
If we want to get the username with IDs of 1 to 10, 10 users, do we need to create 10 command objects? No. If you need to call the same stored procedure multiple times, you only need to change the input parameters to get different outputs:
'** Call the same stored procedure multiple times **
Dim mycomm, userid, username
Username = ""
Set mycomm = server. Createobject ("ADODB. Command ")
For userid = 1 to 10
With mycomm
. Activeconnection = myconstr 'myconstr is the database connection string
. Commandtext = "GetUserName" 'specifies the name of the stored procedure
. Commandtype = 4' indicates that this is a stored procedure
. Prepared = true' requires that the SQL command be compiled first
If userid = 1 then
. Parameters. append. createparameter ("@ userid", 3, 1, 4, userid)
. Parameters. append. createparameter ("@ username", 40)
. Execute
Else
'Assign a value to the input parameter again (in this case, the input parameter and output parameter values that do not change do not have to be declared again)
. Parameters ("@ userid") = userid
. Execute
End if
End
Username = username + mycomm (1) + "," 'Maybe you like to use Array Storage
Next
Set mycomm = nothing
The code above shows that when you call the same stored procedure repeatedly, you only need to assign a value to the input parameter whose value has changed. This method has multiple input and output parameters, when only one input parameter value changes during each call, the amount of code can be greatly reduced.
5. Stored Procedures with return values, input parameters, and output parameters
As mentioned above, when calling a stored procedure, the order of declared parameters must be the same as that defined in the stored procedure. Note: If a stored procedure has both return values and input and output parameters, the return values must be declared first.