Stored procedure universal calling interface6327629Abstract A method, apparatus and article of manufacture for a universal calling interface for executing a stored procedure in a computer. Parameter information is retrieved from a database catalog and the computer performs type checking against the user-entered parameters. If there is not a type mismatch then the computer executes the stored procedure without the user entering information about the parameters such as address and type. Claims What is claimed is: Description BACKGROUND OF THE INVENTION
Sub main ( )
Dim henv As Long ' Environment handle
Dim hdbc As Long ' Database connection handle
Dim hstmt As Long ' Statement handle
Dim rc As Integer ' Return codes
Dim stmt As String
Dim plen(1) As Long
Dim Tab_Name As String
stmt = "CALL inpsrv(?)"
Tab_Name = "PRESIDENT"
rc = SQLAllocEnv(henv)
rc = SQLAllocConnect(henv, hdbc)
rc = SQLSetConnectOption(hdbc, SQL_AUTOCOMMIT,
SQL_AUTOCOMMIT_OFF)
rc = SQLConnect(hdbc, "sample", Len("sample"),
"userid", Len("userid"), "password",
Len("password"))
rc = SQLAllocStmt(hdbc, hstmt)
rc = SQLPrepare(hstmt, stmt, Len(stmt))
plen(0) = Len(Tab_Name)
rc = SQLBindParameter(hstmt, 1, SQL_PARAM_INPUT,
SQL_BASIC_STRING, SQL_CHAR, Len(Tab_Name), 0,
ByVal Tab_Name, Len(Tab_Name))
rc = SQLExecute(hstmt)
rc = SQLFreeStmt(hstmt, SQL_DROP)
rc = SQLTransact(henv, hdbc, SQL_COMMIT)
rc = SQLDisconnect(hdbc)
rc = SQLFreeConnect(hdbc)
rc = SQLFreeEnv(henv)
End Sub
In the above example, the "SQLAllocStmt", "SQLPrepare", "SQLBindParameter", "SQLExecute", and "SQLFreeStmt" statements are necessary to pass a parameter to a stored procedure. As can be seen, a lot of programming is required to describe the parameters passed to a stored procedure. This programming is inefficient and redundant. Thus, there is a need in the art for a more efficient method of invoking stored procedures with automated parameter checking. SUMMARY OF THE INVENTION To overcome the limitations in the prior art described above, and to overcome other limitations that will become apparent upon reading and understanding the present specification, the present invention discloses a method, apparatus, and article of manufacture for executing a stored procedure in a computer system. In accordance with the present invention, a stored procedure is invoked through a universal calling interface without first declaring the parameters. The computer retrieves parameter information, such as parameter type and address, for the stored procedure from a catalog, performs parameter checking for the parameters specified for the stored procedure using the retrieved parameter information, and then executes the stored procedure in the computer when the parameters match the retrieved parameter information. As a result, the present invention reduces the programming overhead involved in invoking a stored procedure. BRIEF DESCRIPTION OF THE DRAWINGS Referring now to the drawings in which like referenced numbers represent corresponding parts throughout: FIG. 1 is a block diagram illustrating an exemplary hardware environment used to implement the preferred embodiment of the invention; FIG. 2 is a flow diagram illustrating the steps performed by the computer to program the stored procedures; and FIG. 3 is a flow diagram illustrating the steps performed in executing a stored procedure. DETAILED DESCRIPTION OF THE PREFERRED EMBODIMENT In the following description of the preferred embodiment, reference is made to the accompanying drawings which form a part hereof, and in which is shown by way of illustration a specific embodiment in which the invention may be practiced. It is to be understood that other embodiments may be utilized and structural and functional changes may be made without departing from the scope of the present invention. OVERVIEW The stored procedure universal calling interface of the present invention comprises a method, apparatus, and article of manufacture for executing a stored procedure in the memory of a computer, without the need for pre-defining parameter information. The computer retrieves the necessary parameter information from a catalog and performs a parameter check for the parameters specified when the procedure is invoked or executed. If there is a parameter type mismatch, then the computer generates an error message. Otherwise, the computer executes the stored procedure. The parameter checking function may optionally be disabled. HARDWARE ENVIRONMENT FIG. 1 is a block diagram that illustrates an exemplary hardware environment of the present invention. The present invention is typically implemented in a client/server environment, wherein the client and server comprise interconnected computers 100 and 102. It is envisioned that each of the computers 100 and 102 are comprised of processors 104 and 106 and coupled data storage devices 108 and 110. In addition, the computers 100 and 102 may also include keyboards, displays, printers, etc. Although the computers 100 and 102 are preferably interconnected via a network 112, those skilled in the art will recognize that the present invention could be implemented on a single computer, or more than two computers, without departing from the scope of the claims attached hereto. The present invention is preferably implemented using an application program 114, stored procedure 116 and catalog 118. Generally, the application program 114, stored procedure 116 and catalog 118 are tangibly embodied in a computer-readable medium, e.g. one or more of the fixed and/or removable data storage devices 108 and 110. The application program 114, stored procedure 116 and catalog 118 may be loaded from the data storage devices 108 and 110 into the memories of the computers 100 and 102 for execution. The application program 114, stored procedure 116 and catalog 118 all comprise instructions and data which, when read and executed by the computers 100 and 102, cause the computers 100 and 102 to perform the steps necessary to execute the steps or elements of the present invention. STORED PROCEDURE PROGRAMMING FLOWCHART FIG. 2 is a flowchart illustrating the steps necessary to program a stored procedure in the computer 102, via an interpreter or compiler, according to the present invention. Block 200 represents the computer 102 receiving source language statements comprising a stored procedure 116 into the memory of the computer 102, wherein the statements typically comprise a sequence of SQL statements. Block 202 represents the computer 102 translating the source language statements into object code or pseudo code in the memory of the computer 102. Block 204 represents the computer 102 storing parameter information, such as stored procedure name, parameter types and addresses, derived from the source language statements in the catalog 118. Block 206 represents the computer 102 storing the object code as a stored procedure 116 in a stored procedure library 208, wherein the stored procedure library 208 is located in the memory of the computer 102 or alternatively in one or more data storage devices 110. STORED PROCEDURE EXECUTION FLOWCHART FIG. 3 illustrates the steps performed by the computers 100 and 102 in executing the application program 114 and stored procedure 116 according to the present invention. Block 300 represents the computer 100 loading the application program 114 into its memory and executing the application program 114. Block 302 represents the computer 102 invoking the stored procedure 116 in response to a message received from the application program 114 executed by the computer 100. Block 304 is a decision block that represents the computer 102 determining whether parameter checking is enabled. If so, control transfers to Blocks 306-314; otherwise, control transfers to Block 314. Disabling the parameter checking provides performance benefits, but may result in errors during execution of the stored procedure 116, when there is a type mismatch that is not identified prior to the invocation of the stored procedure 116. Block 306 represents the computer 102 accessing the catalog 118 for parameter information using the name of the stored procedure 116. The catalog 118 stores all the necessary information to be used by the stored procedure 116, including the name and location of the stored procedure 116. Block 308 represents the computer 102 performing the parameter checking function by comparing the parameter information retrieved from the catalog 118 with the parameters passed to the stored procedure 116 by the application program 114. Block 310 is a decision block that represents the computer 102 determining whether there is a parameter type mismatch. If so, control transfers to Block 312; otherwise, control transfers to Block 314. Block 312 represents the computer 102 generating an error message in response to the parameter type mismatch. Block 314 represents the computer 102 executing the stored procedure 116. EXAMPLE Following is an example of a VisualBasic program that could be used to implement the present invention:
dim d as double
dim s as string
dim obj as object
set obj = sp1.adapter ' short hand to sp1 adapter
d = 0
s = "name"
obj.opendb ' connect to the database
obj.call d, s ' passing parameters
obj.closedb ' disconnect from the database
text1.text = obj.param(0) ' retrieve result for `d`
text2.text = obj.param(1) ' retrieve result for `s`
Note that `sp1` is a VisualBasic program which implements the present invention using the Microsoft VisualBasic protocol. This protocol provides a graphical user interface (GUI) to help the user specify which server, userid, password, and stored procedure to invoke. In addition, it automatically checks the stored procedure catalog to retrieve the argument type information. CONCLUSION The foregoing description of the preferred embodiment of the invention has been presented for the purposes of illustration and description. It is not intended to be exhaustive or to limit the invention to the precise form disclosed. Many modifications and variations are possible in light of the above teaching. It is intended that the scope of the invention be limited not with this detailed description, but rather by the claims appended hereto.
|
Same subclass Same class Consider this |
||||||||||
