C#调用存储过程带输出参数或返回值分类(转)
C#调用存储过程带输出参数或返回值
- CREATE PROCEDURE [dbo].[GetNameById]
- @studentid varchar(8),
- @studentname nvarchar(50) OUTPUT
- AS
- BEGIN
- SELECT @studentname=studentname FROM student
- WHERE studentid=@studentid
- if @@Error<>0
- RETURN -1
- else
- RETURN 0
- END
- using (SqlConnection conn = new SqlConnection(connStr))
- {
- try
- {
- SqlCommand cmd = new SqlCommand("GetNameById", conn);
- cmd.CommandType = CommandType.StoredProcedure;
- cmd.Parameters.AddWithValue("@studentid", "09888888"); //给输入参数赋值
- SqlParameter parOutput =cmd.Parameters.Add("@studentname", SqlDbType.NVarChar, 50); //定义输出参数
- parOutput.Direction = ParameterDirection.Output; //参数类型为Output
- SqlParameter parReturn = new SqlParameter("@return", SqlDbType.Int);
- parReturn.Direction = ParameterDirection.ReturnValue; //参数类型为ReturnValue
- cmd.Parameters.Add(parReturn);
- conn.Open();
- cmd.ExecuteNonQuery();
- MessageBox.Show(parOutput.Value.ToString()); //显示输出参数的值
- MessageBox.Show(parReturn.Value.ToString()); //显示返回值
- }
- catch (System.Exception ex)
- {
- MessageBox.Show(ex.Message);
- }
- }
- Create PROCEDURE AddOrderTran
- @country nvarchar(100),
- @adds nvarchar(100),
- @ynames nvarchar(100),
- @pids nvarchar(100),
- @cellp nvarchar(100),
- @cphone nvarchar(100),
- @amounts nvarchar(100),
- @cartnumber nvarchar(100)
- as
- Declare @id int
- BEGIN TRANSACTION
- insert into Orders(Order_Country,Order_Adress,Order_UserName,Order_PostID,Cells,Order_Phone,Total_pay,CartNumber,IsPay)
- values (@country,@adds,@ynames,@pids,@cellp,@cphone,@amounts,@cartnumber,'0')
- Select @id=@@identity
- insert into Orders_Item (OrderNumber,ProductsID,Products_Color,Products_Price,Order_Qty,Item_Total)
- select @id,Carts_Item.ProductsID,Carts_Item.Products_Color,Carts_Item.Products_Price,Carts_Item.Item_Qty,Carts_Item.Total_Pay
- from Carts_Item where Carts_Item.CartNumber=@cartnumber
- delete Carts_Item where CartNumber=@cartnumber
- IF @@error <> 0 --发生错误
- BEGIN
- ROLLBACK TRANSACTION
- RETURN 0
- END
- ELSE
- BEGIN
- COMMIT TRANSACTION
- RETURN @id --执行成功
- END
- #region 执行存储过程
- SqlParameter[] param = new SqlParameter[]
- {
- new SqlParameter("@country",country),
- new SqlParameter("@adds",adds),
- new SqlParameter("@ynames",ynames),
- new SqlParameter("@pids", pids),
- new SqlParameter("@cellp",cellp),
- new SqlParameter("@cphone", cphone),
- new SqlParameter("@amounts",amounts),
- new SqlParameter("@cartnumber",cartnumber),
- new SqlParameter("@return",SqlDbType.Int)
- };
- param[8].Direction = ParameterDirection.ReturnValue;
- MSCL.SqlHelper.RunProcedure("AddOrderTran", param);
- object obj = param[8].Value; //接受返回值
- //string connStr = System.Configuration.ConfigurationManager.AppSettings["ConStr"].ToString();
- //using (SqlConnection conn = new SqlConnection(connStr))
- //{
- // conn.Open();
- // SqlCommand cmd = new SqlCommand("AddOrderTran", conn);
- // cmd.CommandType = CommandType.StoredProcedure;
- // SqlParameter para1 = new SqlParameter("@country", country);
- // para1.Direction = ParameterDirection.Input; //参数方向 为输入参数
- // cmd.Parameters.Add(para1);
- // SqlParameter para2 = new SqlParameter("@adds", adds);
- // para2.Direction = ParameterDirection.Input;
- // cmd.Parameters.Add(para2);
- // SqlParameter para3 = new SqlParameter("@ynames", ynames);
- // para3.Direction = ParameterDirection.Input;
- // cmd.Parameters.Add(para3);
- // SqlParameter para4 = new SqlParameter("@pids", pids);
- // para4.Direction = ParameterDirection.Input;
- // cmd.Parameters.Add(para4);
- // SqlParameter para5 = new SqlParameter("@cellp", cellp);
- // para5.Direction = ParameterDirection.Input;
- // cmd.Parameters.Add(para5);
- // SqlParameter para6 = new SqlParameter("@cphone", cphone);
- // para6.Direction = ParameterDirection.Input;
- // cmd.Parameters.Add(para6);
- // SqlParameter para7 = new SqlParameter("@amounts", amounts);
- // para7.Direction = ParameterDirection.Input;
- // cmd.Parameters.Add(para7);
- // SqlParameter para8 = new SqlParameter("@cartnumber", cartnumber);
- // para8.Direction = ParameterDirection.Input;
- // cmd.Parameters.Add(para8);
- // SqlParameter paraReturn = new SqlParameter("@return", SqlDbType.Int);
- // paraReturn.Direction = ParameterDirection.ReturnValue; //参数方向 为返回参数
- // cmd.Parameters.Add(paraReturn);
- // cmd.ExecuteNonQuery();
- // object obj = paraReturn;
- // if (obj.ToString() == "0")
- // {
- // //存储过程执行失败
- // }
- // else
- // {
- // //成功
- // }
- //}
- //#endregion
- 本文的数据库用的是sql server自带数据Northwind
- 1.只返回单一记录集的存储过程
- SqlConnection sqlconn = new SqlConnection(conn);
- SqlCommand cmd = new SqlCommand();
- // 设置sql连接
- cmd.Connection = sqlconn;
- // 如果执行语句
- cmd.CommandText = "Categoriestest1";
- // 指定执行语句为存储过程
- cmd.CommandType = CommandType.StoredProcedure;
- SqlDataAdapter dp = new SqlDataAdapter(cmd);
- DataSet ds = new DataSet();
- // 填充dataset
- dp.Fill(ds);
- // 以下是显示效果
- GridView1.DataSource = ds;
- GridView1.DataBind();
- 存储过程Categoriestest1
- CREATE PROCEDURE Categoriestest1
- AS
- select *
- from Categories
- GO
- 2. 没有输入输出的存储过程
- SqlConnection sqlconn = new SqlConnection(conn);
- SqlCommand cmd = new SqlCommand();
- cmd.Connection = sqlconn;
- cmd.CommandText = "Categoriestest2";
- cmd.CommandType = CommandType.StoredProcedure;
- sqlconn.Open();
- // 执行并显示影响行数
- Label1.Text = cmd.ExecuteNonQuery().ToString();
- sqlconn.Close();
- 存储过程Categoriestest2
- CREATE PROCEDURE Categoriestest2 AS
- insert into dbo.Categories
- (CategoryName,[Description],[Picture])
- values ('test1','test1',null)
- GO
- 3. 有返回值的存储过程
- SqlConnection sqlconn = new SqlConnection(conn);
- SqlCommand cmd = new SqlCommand();
- cmd.Connection = sqlconn;
- cmd.CommandText = "Categoriestest3";
- cmd.CommandType = CommandType.StoredProcedure;
- // 创建参数
- IDataParameter[] parameters = {
- new SqlParameter("rval", SqlDbType.Int,4)
- };
- // 将参数类型设置为 返回值类型
- parameters[0].Direction = ParameterDirection.ReturnValue;
- // 添加参数
- cmd.Parameters.Add(parameters[0]);
- sqlconn.Open();
- // 执行存储过程并返回影响的行数
- Label1.Text = cmd.ExecuteNonQuery().ToString();
- sqlconn.Close();
- // 显示影响的行数和返回值
- Label1.Text += "-" + parameters[0].Value.ToString() ;
- 存储过程Categoriestest3
- CREATE PROCEDURE Categoriestest3
- AS
- insert into dbo.Categories
- (CategoryName,[Description],[Picture])
- values ('test1','test1',null)
- return @@rowcount
- GO
- 4. 有输入参数和输出参数的存储过程
- SqlConnection sqlconn = new SqlConnection(conn);
- SqlCommand cmd = new SqlCommand();
- cmd.Connection = sqlconn;
- cmd.CommandText = "Categoriestest4";
- cmd.CommandType = CommandType.StoredProcedure;
- // 创建参数
- IDataParameter[] parameters = {
- new SqlParameter("@Id", SqlDbType.Int,4) ,
- new SqlParameter("@CategoryName", SqlDbType.NVarChar,15) ,
- };
- // 设置参数类型
- parameters[0].Direction = ParameterDirection.Output; // 设置为输出参数
- parameters[1].Value = "testCategoryName";
- // 添加参数
- cmd.Parameters.Add(parameters[0]);
- cmd.Parameters.Add(parameters[1]);
- sqlconn.Open();
- // 执行存储过程并返回影响的行数
- Label1.Text = cmd.ExecuteNonQuery().ToString();
- sqlconn.Close();
- // 显示影响的行数和输出参数
- Label1.Text += "-" + parameters[0].Value.ToString() ;
- 存储过程Categoriestest4
- CREATE PROCEDURE Categoriestest4
- @id int output,
- @CategoryName nvarchar(15)
- AS
- insert into dbo.Categories
- (CategoryName,[Description],[Picture])
- values (@CategoryName,'test1',null)
- set @id = @@IDENTITY
- GO
- 5. 同时具有返回值、输入参数、输出参数的存储过程
- SqlConnection sqlconn = new SqlConnection(conn);
- SqlCommand cmd = new SqlCommand();
- cmd.Connection = sqlconn;
- cmd.CommandText = "Categoriestest5";
- cmd.CommandType = CommandType.StoredProcedure;
- // 创建参数
- IDataParameter[] parameters = {
- new SqlParameter("@Id", SqlDbType.Int,4) ,
- new SqlParameter("@CategoryName", SqlDbType.NVarChar,15) ,
- new SqlParameter("rval", SqlDbType.Int,4)
- };
- // 设置参数类型
- parameters[0].Direction = ParameterDirection.Output; // 设置为输出参数
- parameters[1].Value = "testCategoryName"; // 给输入参数赋值
- parameters[2].Direction = ParameterDirection.ReturnValue; // 设置为返回值
- // 添加参数
- cmd.Parameters.Add(parameters[0]);
- cmd.Parameters.Add(parameters[1]);
- cmd.Parameters.Add(parameters[2]);
- sqlconn.Open();
- // 执行存储过程并返回影响的行数
- Label1.Text = cmd.ExecuteNonQuery().ToString();
- sqlconn.Close();
- // 显示影响的行数,输出参数和返回值
- Label1.Text += "-" + parameters[0].Value.ToString() + "-" + parameters[2].Value.ToString();
- 存储过程Categoriestest5
- CREATE PROCEDURE Categoriestest5
- @id int output,
- @CategoryName nvarchar(15)
- AS
- insert into dbo.Categories
- (CategoryName,[Description],[Picture])
- values (@CategoryName,'test1',null)
- set @id = @@IDENTITY
- return @@rowcount
- GO
- 6. 同时返回参数和记录集的存储过程
- SqlConnection sqlconn = new SqlConnection(conn);
- SqlCommand cmd = new SqlCommand();
- cmd.Connection = sqlconn;
- cmd.CommandText = "Categoriestest6";
- cmd.CommandType = CommandType.StoredProcedure;
- // 创建参数
- IDataParameter[] parameters = {
- new SqlParameter("@Id", SqlDbType.Int,4) ,
- new SqlParameter("@CategoryName", SqlDbType.NVarChar,15) ,
- new SqlParameter("rval", SqlDbType.Int,4) // 返回值
- };
- // 设置参数类型
- parameters[0].Direction = ParameterDirection.Output; // 设置为输出参数
- parameters[1].Value = "testCategoryName"; // 给输入参数赋值
- parameters[2].Direction = ParameterDirection.ReturnValue; // 设置为返回值
- // 添加参数
- cmd.Parameters.Add(parameters[0]);
- cmd.Parameters.Add(parameters[1]);
- cmd.Parameters.Add(parameters[2]);
- SqlDataAdapter dp = new SqlDataAdapter(cmd);
- DataSet ds = new DataSet();
- // 填充dataset
- dp.Fill(ds);
- // 显示结果集
- GridView1.DataSource = ds.Tables[0];
- GridView1.DataBind();
- Label1.Text = "";
- // 显示输出参数和返回值
- Label1.Text += parameters[0].Value.ToString() + "-" + parameters[2].Value.ToString();
- 存储过程Categoriestest6
- CREATE PROCEDURE Categoriestest6
- @id int output,
- @CategoryName nvarchar(15)
- AS
- insert into dbo.Categories
- (CategoryName,[Description],[Picture])
- values (@CategoryName,'test1',null)
- set @id = @@IDENTITY
- select * from Categories
- return @@rowcount
- GO
- 7. 返回多个记录集的存储过程
- SqlConnection sqlconn = new SqlConnection(conn);
- SqlCommand cmd = new SqlCommand();
- cmd.Connection = sqlconn;
- cmd.CommandText = "Categoriestest7";
- cmd.CommandType = CommandType.StoredProcedure;
- SqlDataAdapter dp = new SqlDataAdapter(cmd);
- DataSet ds = new DataSet();
- // 填充dataset
- dp.Fill(ds);
- // 显示结果集1
- GridView1.DataSource = ds.Tables[0];
- GridView1.DataBind();
- // 显示结果集2
- GridView2.DataSource = ds.Tables[1];
- GridView2.DataBind();
- 存储过程Categoriestest7
- CREATE PROCEDURE Categoriestest7
- AS
- select * from Categories
- select * from Categories
- GO
C#调用存储过程带输出参数或返回值分类(转)相关推荐
- C#使用ExecuteReader返回DataReader既有查询结果集又有输出参数或返回值的使用注意事项...
Command 对象公开了几个可用于执行所需操作的 Execute 方法.当以数据流的形式返回结果时,使用 ExecuteReader 可返回 DataReader 对象.使用 ExecuteScal ...
- python3_函数_形参调用方式 / 不定长参数 / 函数返回值 / 变量作用域 / 匿名函数 / 递归调用 / 函数式编程 / 高阶函数 / gobal和nonlocal关键字 / 内置函数
1.形参的调用方式 1. 位置参数调用 2. 关键词参数调用 原则: 关键词参数调用不能写在位置参数调用的前边 def test1(name, age):print("name:" ...
- php+方法返回多个参数,PHP中调用外部程序,及其参数与返回值
用了一下午,终于弄明白了如何在PHP代码中调用外部程序. 在PHP中调用外部程序主要有两个函数,system和exec. system的原型为string system(string command ...
- mysql 输出参数赋值_【Mysql 调用存储过程,输出参数的坑】
UIViewContentMode各类型效果 UIViewContentMode typedef enum { UIViewContentModeScaleToFill, UIView ...
- Android调用远程Service的参数和返回值都需要实现Parcelable接口
import android.os.Parcel; import android.os.Parcelable; public class Person implements Parcelable{ p ...
- C# 调用存储过程操作 OUTPUT参数和Return返回值
本文转载:http://www.cnblogs.com/libingql/archive/2010/05/02/1726104.html 存储过程是存放在数据库服务器上的预先编译好的sql语句.使用存 ...
- C#操作存储过程,输入参数,返回结果
C#操作存储过程,输入参数,返回结果 分类: VB和ASP(asp) 2008-08-31 20:57 281人阅读 评论(0) 收藏 举报 SQL存储过程显然是非常强大的,.NET也支持对存储过程的 ...
- C#里调用带输出参数的存储过程
C#里调用带输出参数的存储过程 1using System; 2using System.Collections.Generic; 3using System.Linq; 4using Sys ...
- oracle调用存储过程output,vb.net 调用oracle的存储过程的方法(带输入参数 和输出参数或者返回记录集)...
1.直接调用存储过程 2 是用包的方式调用存储过程 3 调用存储过程且该存储过程返回记录集 这种必须使用包的方式 1.直接调用存储过程 测试存储过程为: create or replace proce ...
最新文章
- php读取js验证码,PHP + JS 实现验证码功能
- 王海峰发布百度智能云最新架构,推出AI中台和知识中台
- C++学习笔记之函数指针
- 4500-X启动到“511K bytes of non-volatile configuration memory”,无法继续?
- 使用 ftrace 调试 Linux 内核,第 2 部分
- 网易云信SDK V3.1.0版本发布啦
- Python3.6学习笔记(二)
- linux 运行ca.crt,linux下使用openssl生成 csr crt CA证书,opensslcsr
- 跨浏览器兼容的HTML5视频音频播放器
- 用C#访问Dynamic AX的WebService.
- 如何用python获得实时股票信息_【python】用命令行获取实时股票信息
- cdn加载插件和npm安装的差别_web开发:打字机效果插件Typed.js
- 安利一个React同构渲染脚手架 —— razzle
- 技术人应有的职业意识
- 关于性格内向者的10个误解,献给奋战在一线的程序员
- Maven -- dependency详解
- Linux 端口扫描
- 用HTML+CSS做一个漂亮简单的轻量级图片相册博客网站(web前端期末大作业)
- 立体栅格地图_基于滑动窗口的室内三维立体栅格地图特征点提取方法与流程
- C++11之内联名字空间(inline namespace)和ADL特性(Argument-Dependent name Lookup)
热门文章
- kafka comsumer消费消息后不commit offset的情况分析
- Oracle 11gR2 RSF(Recurive Subquery factoring)
- App Store2016年最新审核规则
- 【框架】amaze ui学习(一)
- 京东云修改Hostname,Centos7修改Hostname
- 超酷炫技:10 个牛逼的单行代码编程技巧
- 一文概括常用图像处理算法
- ktv服务器几套系统,KTV场所需要哪些设备
- 浅谈零知识证明之二:简短无交互证明(SNARK)
- autojs左右滑动脚本代码_Swiper.js实现移动端元素左右滑动