存储过程里怎么什么是输出参数?什么是输入参数
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%>
光点科技
2023-08-15 广告
2023-08-15 广告
通常情况下,我们会按照结构模型把系统产生的数据分为三种类型:结构化数据、半结构化数据和非结构化数据。结构化数据,即行数据,是存储在数据库里,可以用二维表结构来逻辑表达实现的数据。最常见的就是数字数据和文本数据,它们可以某种标准格式存在于文件...
点击进入详情页
本回答由光点科技提供
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询