C# 存储过程 如何返回 tatatable

作者&投稿:在徐 (若有异议请与网页底部的电邮联系)
存储过程返回表~

通过调用存储过程不但能返回值,还能返回一张表,下面的代码中实现了创建一个临时表,并返回这个表(支持多个)的用法。希望对大家有帮助,
Examda提示: 这里还涉及到一个临时表的创建,什么是sql server真正的临时表,并发不冲突的临时表,要让系统建立在tempdb中才是,sql server会自动管理这些临时表
c#代码如下
DataSet ds = new DataSet();
System.Data.OleDb.OleDbCommand cmd = m_TdlyDataAccess.DBConnection.CreateCommand();
cmd.CommandText = "prcTest";
cmd.CommandType = CommandType.StoredProcedure;
System.Data.OleDb.OleDbDataAdapter dap = new System.Data.OleDb.OleDbDataAdapter(cmd);
dap.Fill(ds);
存储过程如下
SET QUOTED_IDENTIFIER ON
GO
SET ANSI_NULLS ON
GO
CREATE PROCEDURE [dbo].[prcTest]
AS
begin
CREATE TABLE #t(x INT PRIMARY KEY,y int default 0,z int default 0)
INSERT INTO #t VALUES (99,0,0)
INSERT INTO #t VALUES (239,0,0)
INSERT INTO #t VALUES (939,0,0)
select * from #t
drop table #t
end
GO
SET QUOTED_IDENTIFIER OFF
GO
SET ANSI_NULLS ON
GO

那句改成
EXEC bk @bor,@pp output

Database db = DALFactory.DatabaseCustomFoctory.CreateDatabase();
if (db != null)
{
string sqlCommand = "Web_DataV10_Area_SelectLayer";
DbCommand dbCommand = db.GetStoredProcCommand(sqlCommand);
db.AddInParameter(dbCommand, "OperatorID", DbType.Int32, EmpID);
db.AddInParameter(dbCommand, "AreaID", DbType.String, "");
ds = db.ExecuteDataSet(dbCommand);
现在都用工厂了,这种方法你可以体验一下,直接调用sql数据库中的存贮过程,返回dataset,得到datatable,不用SqlDataAdapter,可以吗

直接传DataTable
DataTable dt = new DataTable()
ada.Fill(dt);

ds.tables[""]或者ds.tables[i] 不就是 Datatable


西和县19528197183: C# 存储过程 如何返回 tatatable -
锐树悉君: ds.tables[""]或者ds.tables[i] 不就是 Datatable

西和县19528197183: c# 执行存储过程,并且返回DataSet -
锐树悉君: DataSet ds=new Dataset(); DataAdapter da= new DataAdapter(conn,"Select 语句"); da.Fill(ds);

西和县19528197183: C#.. 如何获取SQL存储过程的返回值? -
锐树悉君: 晕了吧,你的存储过程要给一个输出参数,也许我写的不对,但是你可以参考下 create proc usp_check_t @t_name nvarchar(20) @t_int int output as if object_id(@t_name) is null return @t_int=1 else return @t_int=0--这样执行 declare @t_int int exec usp_check_t '文本',@t_int output 这样就得到了你要的数字

西和县19528197183: c#存储过程是如何返回Table的???高手赐教 -
锐树悉君: 存储过程、查询语句,还有视图都会返回一个表 填充表时如果没有指定表名 那么DataSet中的DataTable默认是跟数据库表同名 所以你可以使用DataSet.Table["表名"]来使用 这样就可以避免使用索引

西和县19528197183: 大虾,给个调用c#存储过程返回DataSet的例子,谢谢~~ -
锐树悉君: /// 执行查询存储过程 ////// 存储过程名称 ///public DataSet GetProcData(string strproc) { SqlCommand scmd = new SqlCommand(strproc,sqlcon); scmd.CommandType = CommandType.StoredProcedure; SqlDataAdapter sda = new SqlDataAdapter(); sda.SelectCommand = scmd; DataSet ds = new DataSet(); sda.Fill(ds); return ds; }...

西和县19528197183: sql 存储过程返回值 C# -
锐树悉君: SqlParameter[] param={new SqlParameter("@i_out",...}; 【param[0].Direction=ParameterDirection.OutPut;】 cmd.Execute...param[0].value; //有返回值了.也就是将param设置为输出参数, 执行完存储过程,param里面就有你的返回值了.

西和县19528197183: c#怎么调用存储过程 并返回多个返回值 -
锐树悉君: 比如你的存储过程返回参数变量名字为@res,而且sqlcommand cmd已经声明定义; 那么在执行sql语句之前 应该:cmd.Parameters["@res"].Direction = ParameterDirection.InputOutput; 然后执行sql语句;执行完毕再:int res=(int)cmd.Parameters["@res"].Value; 结束,res就是存储过程的返回值了

西和县19528197183: c#中如何调用一个返回游标的存储过程 -
锐树悉君: 下面是我以前用的,应该还有好方法,只是我用了这一种.这个为oracle的,其他的应该类似,把oracleClient这个东西换换,就可以看见说明了.存储过程名:ProGetBookList 参数:s_Barcode(varchar),ResultCursor(游标)----- System.Data....

西和县19528197183: c#中怎么调用一个返回游标的存储过程 -
锐树悉君: 与调用普通存储过程一样调用.SqlConnection con = new SqlConnection(……); SqlCommand cmd = con.CreateCommand(); cmd.CommandText = "带游标的存储过程名称"; cmd.CommandType = CommandType.StoredProcedure; …… SqlDataReader rd = cmd.ExecuteReader();//或者 cmd.ExecuteNonQuery();

西和县19528197183: c#.NET如何调用存储过程,还有就是如何调用,输出返回值? -
锐树悉君: 判断是否插入成功,不用这么做吧!“@error int output”这个参数不要.传“@cateID bigint, @cate varchar(100) ”这两个参数进去就好,再用int flag = cmd.exenonquery()来执行,falg>0的话就插入成功了

本站内容来自于网友发表,不代表本站立场,仅表示其个人看法,不对其真实性、正确性、有效性作任何的担保
相关事宜请发邮件给我们
© 星空见康网