存储过程里怎么什么是输出参数?什么是输入参数
1个回答
展开全部
使用输出参数类似于使用返回值。但是输出参数具有两个重要的优势。可以使用输出参数从存储过程传递出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="System.Data.SqlClient" %>
<%@ Import Namespace="System.Data" %>
<%
Dim conPubs As SqlConnection
Dim cmdLastName As SqlCommand
Dim parmLastName As SqlParameter
Dim strLastName As String
'本站为了防止在源代码中泄露用户名和密码,使用通过web.config提供的数据库连接字符串。
'你在本地使用时,将下面这三行语句删除或注释掉。
Dim strConString as string
strConString=ConfigurationSettings.AppSettings("conString")
conPubs=New SqlConnection(strConString)
'你本地测试时,将下面这行的注释符去掉,并填入相应的数据库用户名和密码,数据库名和服务器名。
'conPubs = New SqlConnection( "Server=localhost;uid=sa;pwd=secret;database=pubs" )
cmdLastName = New SqlCommand( "getLastname", conPubs )
cmdLastName.CommandType = CommandType.StoredProcedure
' FirstName Input Parameter
cmdLastName.Parameters.Add( "@firstname", "Ann" )
' LastName Output Parameter
parmLastName = cmdLastName.Parameters.Add( "@lastname", SqlDbType.Varchar )
parmLastName.Size = 40
parmLastName.Direction = ParameterDirection.Output
' Execute Command
conPubs.Open()
cmdLastName.ExecuteNonQuery()
' Retrieve value of output parameter
If Not IsDBNull( cmdLastName.Parameters( "@lastname" ).Value ) Then
strLastName = cmdLastName.Parameters( "@lastname" ).Value
Else
strLastName = "Unknown"
End If
conPubs.Close()
%>
The last name is <%=strLastName%>
输出参数的另一个优势就是在一个存储过程中可以有多个输出参数。一个存储过程可以包含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="System.Data.SqlClient" %>
<%@ Import Namespace="System.Data" %>
<%
Dim conPubs As SqlConnection
Dim cmdLastName As SqlCommand
Dim parmLastName As SqlParameter
Dim strLastName As String
'本站为了防止在源代码中泄露用户名和密码,使用通过web.config提供的数据库连接字符串。
'你在本地使用时,将下面这三行语句删除或注释掉。
Dim strConString as string
strConString=ConfigurationSettings.AppSettings("conString")
conPubs=New SqlConnection(strConString)
'你本地测试时,将下面这行的注释符去掉,并填入相应的数据库用户名和密码,数据库名和服务器名。
'conPubs = New SqlConnection( "Server=localhost;uid=sa;pwd=secret;database=pubs" )
cmdLastName = New SqlCommand( "getLastname", conPubs )
cmdLastName.CommandType = CommandType.StoredProcedure
' FirstName Input Parameter
cmdLastName.Parameters.Add( "@firstname", "Ann" )
' LastName Output Parameter
parmLastName = cmdLastName.Parameters.Add( "@lastname", SqlDbType.Varchar )
parmLastName.Size = 40
parmLastName.Direction = ParameterDirection.Output
' Execute Command
conPubs.Open()
cmdLastName.ExecuteNonQuery()
' Retrieve value of output parameter
If Not IsDBNull( cmdLastName.Parameters( "@lastname" ).Value ) Then
strLastName = cmdLastName.Parameters( "@lastname" ).Value
Else
strLastName = "Unknown"
End If
conPubs.Close()
%>
The last name is <%=strLastName%>
力控科技
2025-03-07 广告
第一步:看XPE是什么版,如果内核是英文版,需要安装一个MUI包,即语言包。第二步:进入控制面板-区域和语言选项,如下图,在区域选项中,选择“中文(中国)”,位置也为“中国”,在高级选项中,代码页转换表中,将所有的“简体中文”都选择上。...
点击进入详情页
本回答由力控科技提供
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询