使用输出参数类似于使用返回值。但是输出参数具有两个重要的优势。可以使用输出参数从存储过程传递出VarChar,Int,Money或任何其他数据类型的值。而返回值则只能返回整数。
输出参数的另一个优势就是在一个存储过程中可以有多个输出参数。一个存储过程可以包含1024个参数(其中包括输入和输出参数),但是只能包含一个返回值。
比如下面的存储过程根据提供的作者名来检索该作者的姓,该存储过程有一个名为@firstname的输入参数和一个@lastname的输出参数。
Create Procedure GetLastName (@firstname Varchar(20),@lastname Varchar(20) Output) As
Select @lastname=au_lname From Authors Where au_fname=@firstname
程序清单使用了这个存储过程。注意程序清单中如何创建参数,指定尺寸和设置参数方向。在执行了存储过程后,就可以从Parameters集合中获取输出的参数值了。注意是如何使用IsDBNull()来 判别输出参数是否有值。如果没有返回任何值,则不要把它试图赋值给字符串变量。
<%@ Import Namespace="SystemDataSqlClient" %>
<%@ Import Namespace="SystemData" %>
<%
Dim conPubs As SqlConnection
Dim cmdLastName As SqlCommand
Dim parmLastName As SqlParameter
Dim strLastName As String
'本站为了防止在源代码中泄露用户名和密码,使用通过webconfig提供的数据库连接字符串。
'你在本地使用时,将下面这三行语句删除或注释掉。
Dim strConString as string
strConString=ConfigurationSettingsAppSettings("conString")
conPubs=New SqlConnection(strConString)
'你本地测试时,将下面这行的注释符去掉,并填入相应的数据库用户名和密码,数据库名和服务器名。
'conPubs = New SqlConnection( "Server=localhost;uid=sa;pwd=secret;database=pubs" )
cmdLastName = New SqlCommand( "getLastname", conPubs )
cmdLastNameCommandType = CommandTypeStoredProcedure
' FirstName Input Parameter
cmdLastNameParametersAdd( "@firstname", "Ann" )
' LastName Output Parameter
parmLastName = cmdLastNameParametersAdd( "@lastname", SqlDbTypeVarchar )
parmLastNameSize = 40
parmLastNameDirection = ParameterDirectionOutput
' Execute Command
conPubsOpen()
cmdLastNameExecuteNonQuery()
' Retrieve value of output parameter
If Not IsDBNull( cmdLastNameParameters( "@lastname" )Value ) Then
strLastName = cmdLastNameParameters( "@lastname" )Value
Else
strLastName = "Unknown"
End If
conPubsClose()
%>
The last name is <%=strLastName%>
result1=`echo "execute procedure ${proc}"|dbaccess 数据库名`
informix是这样的 如果是别的数据库 需要改成其他数据库的连接方法
追加参数法调用存储过程
追加参数通过CreateParameter方法,用来指定属性创建新的Parameter对象。具体语法如下:
Set parameter = commandCreateParameter (Name, Type, Direction, Size, Value)
·Name 可选,字符串,代表 Parameter 对象名称。
·Type 可选,长整型值,指定 Parameter 对象数据类型。
·Direction 可选,长整型值,指定 Parameter 对象类型。
·Size 可选,长整型值,指定参数值最大长度(以字符或字节数为单位)。
·Value 可选,变体型,指定 Parameter 对象值。
这种方法与上面一种方法的分别主要在于,追加参数的方法在向存储过程传递参数时,这种方法首先通过CreateParameter方法为存储过程创建参数,然后通过Append方法将创建的参数追加到Parameters集合中去。
仍然以存储过程doc_ProcName的调用为例,关键代码如下:
Dim mRst As ADODBRecordset 'Recordset 对象表示的是来自基本表或命令执行结果的记录全集。
Dim prm As ADODBParameter 'Parameter 对象代表参数或与基于参数化查询或存储过程的Command 对象相关联的参数。
adoconnConnectionString = Adodc1ConnectionString
adoconnOpen
Set adocommActiveConnection = adoconn
adocommCommandText = "doc_ProcName"
adocommCommandType = adCmdStoredProc
Set prm = adocommCreateParameter("parameter1", adTinyInt, adParamInput, , "1")
adocommParametersAppend prm
Set prm = adocommCreateParameter("parameter2", adInteger, adParamOutput)
adocommParametersAppend prm
Set mRst = adocommExecute
ReturnValue = adocommParameters(0)
以上就是关于存储过程里怎么什么是输出参数什么是输入参数全部的内容,包括:存储过程里怎么什么是输出参数什么是输入参数、shell中怎么获取存储过程的输出参数给变量、如何用VB6调用带参数带输出的存储过程等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)