关于在程序中调用带output参数的存储过程的问题?谢谢请教了
我在程序中要调用一个带output参数的存储过程,根据返回的output参数值来判断存储过程里的sql是否都正确的执行。那么在程序中该怎么写调用这种存储过程,还有就是怎样得到返回的output参数值。
CREATE PROCEDURE InsertNewsCont
@NewsTitle nvarchar(50),
@NewsContent ntext,
@NewsFrom nvarchar(50),
@ReaSon nvarchar(50) output
AS
select * from NewsTB where NewsTitle= @NewsTitle
if @@rowcount<1
begin
insert into NewsTB(NewsTitle,NewsContent,NewsFrom) Values(@NewsTitle,@NewsContent,@NewsFrom)
end
else
begin
set @ReaSon='对不起,有重复标题!'
end
GO
我的目的就是在程序运行中能获取@ReaSon(当@@rowcount>1情况下)
用.net程序
问题点数:30、回复次数:4Top
1 楼fangxianghua9801(爱在2005!)回复于 2005-08-01 14:45:31 得分 0
dingTop
2 楼vivianfdlpw()回复于 2005-08-01 14:52:22 得分 10
System.Data .SqlClient.SqlParameter [] parm=new SqlParameter []
{
new SqlParameter ("@NewsTitle",SqlDbType.NVarChar),
new SqlParameter ("@NewsContent",SqlDbType.NText),
new SqlParameter ("@NewsFrom",SqlDbType.NVarChar),
new SqlParameter ("@ReaSon",SqlDbType.NVarChar)
};
parm[0].Value ="title";
parm[1].Value="content";
parm[2].Value ="from";
parm[3].Value ="1";
parm[3].Direction =System.Data .ParameterDirection .Output;
DBHelper.ExecuteNonQuery("InsertNewsCont",parm,CommandType.StoredProcedure);
if(parm[3].Value==System.DBNull.Value )
{
Response.Write ("插入成功!");
}
else
{
Response.Write (parm[3].Value.ToString());
}Top
3 楼zlp321002(Life Is Good,Let's Shine)回复于 2005-08-01 14:55:58 得分 10
--REM 执行存储过程,返回字符串数组 VB.net实现,稍微改改,就可以满足你的需求...
Public Shared Function ExecuteSP_ToArrary(ByVal sConnString As String, ByVal Text_STCD As String, ByVal Text_TIME As String, ByRef TableInfo() As String)
Dim conn As OleDbConnection = New OleDbConnection(sConnString)
ReDim TableInfo(2)
Try
conn.Open()
Dim command As OleDbCommand = New OleDbCommand("P_GET_QueryValue", conn)
command.CommandType = CommandType.StoredProcedure
Dim sqlParams() As OleDbParameter = {New OleDbParameter("@STCD", Text_STCD), New OleDbParameter("@GETM", Text_TIME), New OleDbParameter("@ReturnValue", OleDbType.VarChar, 8000), New OleDbParameter("@ReturnColumnCode", OleDbType.VarChar, 8000), New OleDbParameter("@ReturnColumnName", OleDbType.VarChar, 8000)}
sqlParams(2).Direction = ParameterDirection.Output
sqlParams(3).Direction = ParameterDirection.Output
sqlParams(4).Direction = ParameterDirection.Output
Dim i As Integer = 0
While i < sqlParams.Length
command.Parameters.Add(sqlParams(i))
i += 1
End While
command.ExecuteNonQuery()
If sqlParams(2).Value.ToString().Length > 0 Then
TableInfo(0) = sqlParams(2).Value.ToString()
Else
End If
If sqlParams(3).Value.ToString().Length > 0 Then
TableInfo(1) = sqlParams(3).Value.ToString()
Else
End If
If sqlParams(4).Value.ToString().Length > 0 Then
TableInfo(2) = sqlParams(4).Value.ToString()
Else
End If
Catch ex As Exception
Zehua.Log.exNoteBugs(ex, "SigleStcdEdit.aspx")
Finally
conn.Close()
End Try
End FunctionTop
4 楼aw511(点点星灯)回复于 2005-08-01 14:58:09 得分 10
Public Function CompanyNameByUserName(ByVal UserName As String) As String
Try
db.Open()
Dim mydata As SqlCommand
mydata = New SqlCommand("CompnayName", db) --CompnayName存储过程名
mydata.CommandType = CommandType.StoredProcedure
mydata.Parameters.Add("@UserName", SqlDbType.NVarChar, 50).Value = UserName
Dim CompanyName As String
CompanyName = mydata.ExecuteScalar
Return CompanyName
Catch ex As Exception
Throw New Exception(ex.Message)
Finally
db.Close()
End Try
End Function
--类似上面Top




