SqlServer中存储过程 returnC#代码处理以及对应的MySQL如何改写
一.SqlServer 中
1. 创建表
create table testuser(
id int, --primary key,
names varchar(50),
address varchar(50),
paw varchar(50)
)
2.创建存储过程
create proc testp12(@id int ,@names varchar(50),@address varchar(50),@paw varchar(50))
as
begin
declare @maxid int
if @id is null or @id<5
begin
return -1;
end
--set IDENTITY_INSERT testuser on
insert into testuser(id,names,address,paw)values(@id,@names,@address,@paw)
--set IDENTITY_INSERT testuser off
select @maxid=(select max(id) from testuser)
return @maxid
end
3.c#对应的代码处理
#region"SqlServer中存储过程Return返回值处理"
/*
public void getresult(int id, string names, string address, string pwd)
{
string str = " server=192.168.xxx;user id=xx;password=xxxxxxxx;database=xxxxx_xx;min pool size=4;max pool size=4;packet size=3072";
SqlConnection conn = new SqlConnection(str);
conn.Open();
SqlCommand cmd = new SqlCommand();
cmd.CommandType = CommandType.StoredProcedure;
cmd.CommandText = "testp12";
cmd.Parameters.Add(new SqlParameter("@id", SqlDbType.Int));
cmd.Parameters["@id"].Value = id;
cmd.Parameters.Add(new SqlParameter("@names", SqlDbType.VarChar, 50));
cmd.Parameters["@names"].Value = names;
cmd.Parameters.Add(new SqlParameter("@address", SqlDbType.VarChar, 50));
cmd.Parameters["@address"].Value = address;
cmd.Parameters.Add(new SqlParameter("@paw", SqlDbType.VarChar, 50));
cmd.Parameters["@paw"].Value = pwd;
cmd.Parameters.Add(new SqlParameter("@return", SqlDbType.Int));
cmd.Parameters["@return"].Direction = ParameterDirection.ReturnValue;
cmd.Connection = conn;
cmd.ExecuteNonQuery();
conn.Close();
Response.Write(cmd.Parameters["@return"].Value.ToString());
Response.Write("<br/>");
Response.Write("hello world");
}*/
#endregion
二.MySQL中
1.创建表
create table testuser(
id int, names varchar(50),
address varchar(50),
paw varchar(50)
)
2.创建函数
create FUNCTION testp12(_id int , _names varchar(50), _address varchar(50), _paw varchar(50) )
RETURNS INT
label_pro: BEGIN
declare _maxid int;
declare returnid int;
if _id is null or _id<5 then
begin
set returnid=-1;
RETURN returnid;
leave label_pro;
end ;
end if;
-- set IDENTITY_INSERT testuser on
insert into testuser(id,`names`,address,paw)values(_id,_names,_address,_paw);
-- set IDENTITY_INSERT testuser off
set _maxid=(select max(id) from testuser);
set returnid=_maxid;
RETURN returnid;
end
3.C#代码实现----函数实现
#region"函数实现SqlServer中存储过程功能Return"
/// <summary>
/// 函数实现SqlServer中存储过程功能
/// </summary>
/// <param name="id"></param>
/// <param name="names"></param>
/// <param name="address"></param>
/// <param name="pwd"></param> public void getresult(int id, string names, string address, string pwd)
{
string str = "Server=192.168.xxxx;Database=xxxx_xxx; port=xxxx;user id=xxxxx;password= providerName=MySql.Data.MySqlClient";
MySqlConnection conn = new MySqlConnection(str);
conn.Open();
MySqlCommand cmd = new MySqlCommand();
cmd.CommandType = CommandType.StoredProcedure;
cmd.CommandText = "fnetravel2_db.testp12";
cmd.Parameters.Add(new MySqlParameter("_id", MySqlDbType.Int32));
cmd.Parameters["_id"].Value = id;
cmd.Parameters.Add(new MySqlParameter("_names", MySqlDbType.VarChar, ));
cmd.Parameters["_names"].Value = names;
cmd.Parameters.Add(new MySqlParameter("_address", MySqlDbType.VarChar, ));
cmd.Parameters["_address"].Value = address;
cmd.Parameters.Add(new MySqlParameter("_paw", MySqlDbType.VarChar, ));
cmd.Parameters["_paw"].Value = pwd;
// cmd.Parameters.Add(new MySqlParameter("returnid", MySqlDbType.Int32));
//cmd.Parameters["returnid"].Direction = ParameterDirection.ReturnValue;
cmd.Parameters.Add("returnid", MySqlDbType.Int32, );
//设置参数的类型为输出参数,默认情况下是输入,
cmd.Parameters["returnid"].Direction = ParameterDirection.ReturnValue;
cmd.Connection = conn;
cmd.ExecuteNonQuery();
string name = cmd.Parameters["returnid"].Value.ToString();
conn.Close();
Response.Write(name);
Response.Write("<br/>");
Response.Write("hello world"); }
#endregion
4.存储过程实现
create PROCEDURE testp122(in _id int ,in _names varchar(50),in _address varchar(50),in _paw varchar(50),out returnid int )
label_pro:BEGIN
declare _maxid int;
-- declare returnid int;
if _id is null or _id<5 then
begin
set returnid=-1;
leave label_pro;
end ;
end if;
-- set IDENTITY_INSERT testuser on
insert into testuser(id,`names`,address,paw)values(_id,_names,_address,_paw);
-- set IDENTITY_INSERT testuser off
set _maxid=(select max(id) from testuser);
set returnid=_maxid;
end
5.C#代码实现----存储过程
#region"mysql存储过程实现SqlServer中存储过程功能Return"
/// <summary>
///
/// </summary>
/// <param name="id"></param>
/// <param name="names"></param>
/// <param name="address"></param>
/// <param name="pwd"></param>
public void getresult(int id, string names, string address, string pwd)
{
string str = "Server=192.168.xxxxxx;Database=xxxxx_dxxxxxxb; port=xxxxx;user id=xxxxx;password= providerName=MySql.Data.MySqlClient";
MySqlConnection conn = new MySqlConnection(str);
conn.Open();
MySqlCommand cmd = new MySqlCommand();
cmd.CommandType = CommandType.StoredProcedure;
cmd.CommandText = "fnetravel2_db.testp122";
cmd.Parameters.Add(new MySqlParameter("_id", MySqlDbType.Int32));
cmd.Parameters["_id"].Value = id;
cmd.Parameters.Add(new MySqlParameter("_names", MySqlDbType.VarChar, ));
cmd.Parameters["_names"].Value = names;
cmd.Parameters.Add(new MySqlParameter("_address", MySqlDbType.VarChar, ));
cmd.Parameters["_address"].Value = address;
cmd.Parameters.Add(new MySqlParameter("_paw", MySqlDbType.VarChar, ));
cmd.Parameters["_paw"].Value = pwd;
// cmd.Parameters.Add(new MySqlParameter("returnid", MySqlDbType.Int32));
//cmd.Parameters["returnid"].Direction = ParameterDirection.ReturnValue;
cmd.Parameters.Add("returnid", MySqlDbType.Int32, );
//设置参数的类型为输出参数,默认情况下是输入,
cmd.Parameters["returnid"].Direction = ParameterDirection.Output;
cmd.Connection = conn;
cmd.ExecuteNonQuery();
string name = cmd.Parameters["returnid"].Value.ToString();
conn.Close();
Response.Write(name);
Response.Write("<br/>");
Response.Write("hello world"); } }
#endregion
看到上面想到是不是SqlServer中也可以实现这个功能,但是测试发现SqlServer中函数不允许insert语句。但是如果函数返回表则是可以的。如这个函数:
CREATE FUNCTION func(@selection int)
RETURNS @table TABLE
(
id char(4) primary key not null,
names nvarchar(4) null
)
AS
BEGIN
IF @selection = 0
INSERT INTO @table SELECT id,names FROM testuser
ELSE
INSERT INTO @table SELECT id,names FROM testuser
Return
END
这些例子都是我实践得到了。
记录一点点,收获一点点。
SqlServer中存储过程 returnC#代码处理以及对应的MySQL如何改写的更多相关文章
- Sqlserver中存储过程,触发器,自定义函数(一)
Sqlserver中存储过程,触发器,自定义函数 1.存储过程有关内容存储过程的定义:存储过程的分类:存储过程的创建,修改,执行:存储过程中参数的传递,返回与接收:存储过程的返回值:存储过程使用游标. ...
- SqlServer中存储过程中将Exec的执行结果赋值给变量输出
原文 SqlServer中存储过程中将Exec的执行结果赋值给变量输出 背景: 遇到这样一种情况:动态向存储过程中传入表名和表的某些属性(这里用到的是主键ID),然后利用这两个变量查出一条数据的某些字 ...
- Sqlserver中存储过程,触发器,自定义函数(二)
Sqlserver中存储过程,触发器,自定义函数: 自定义函数:1.函数类型:2.函数的参数和返回值: 1.函数类型:标量值函数,返回的是一个标量值表值函数:内联表值函数:多语句表值函数. 标量值函数 ...
- Sqlserver中存储过程,触发器,自定义函数
Sqlserver中存储过程,触发器,自定义函数: 1. 触发器:是针对数据库表或数据库的特殊存储过程,在某些行为发生的时候就会被激活 触发器的分类: DML触发器:发生在数据操作语言执行时触发执行的 ...
- SQLServer 中存储过程
SQLServer 中存储过程返回的三种方式( 包括存储过程的创建, 在存储过程中调用, 在VS中调用的方法)存储过程有三种返回: 1. 用return返回数字型数据 2. 用返回参数 ...
- SQLServer中存储过程StoredProcedure创建及C#调用(转)
此文作为入门了解用,转自http://www.2cto.com/database/201502/378260.html 存储过程就是已经编译好的.优化过的放在数据库服务器中的一些SQL语句:可供应用程 ...
- sqlserver 中存储过程的基础知识记录
1.什么是存储过程? 存储过程就是作为可执行对象存放在数据库中的一个或多个SQL命令. 通俗来讲:存储过程其实就是能完成一定操作的一组SQL语句. 2.为什么要用存储过程? 1)存储过程只在创建时进行 ...
- Sqlserver中存储过程和游标的一些使用例子
/*带输入输出参数存储过程*/ ALTER PROCEDURE pro_test2 @userID INT, @maxUserID INT OUTPUT, @countUser INT OUTPUT ...
- SqlServer和MySQL中存储过程out返回值处理C#代码
1.SqlServer中out处理 C#代码 #region"SqlServer中存储过程处理out返回值" //public void getdata() //{ // stri ...
随机推荐
- 跨域问题-jsonp
前端同源策略并不会拦截静态资源请求,那么就将接口伪装成资源,然后后端配合返回一个前端预定义的方法调用,将返回值放入调用该函数的形参即可 <!DOCTYPE html> <html l ...
- 产品管理?企业规范化?iclap秀出新高度
19世纪,美国西部开发,无数拓荒者涌入,并最终因金矿的发现形成了淘金热.而当无数人埋头寻找黄金之时,有一个人却抬起头看到了潜藏在无数淘金者身上的金矿-这个人就是牛仔裤的发明者,Levi’s的创始人-李 ...
- (转载)sql注入实战 mysql篇
出现的关键名词有: UNION SELECT load_file hex 为了方便说明我们先创建两个表:hehe和heihei,很明显它们一个拥有2列属性,一个拥有3列属性 ======== ...
- Android系统机制
Android系统机制 本文主要介绍Android系统整体运行机制 Linux中的一些概念 uboot加载系统内核到内存,系统内核运行起来的后,会创建第一个用户进程叫init进程,该进程是所有用户进程 ...
- “凯易迅Calix”实习上机——求元音开头辅音结尾的子串
题目要求: 对于一个输入的字符串(26个小写字母组成),求出他的所有子串中元音开头,辅音结尾的子串.在这所有的子串中,输出第一个和最后一个. 例如aab,共有子串a,aa,aab,ab,b:但是满足元 ...
- Spring MVC 流程
1. 检查是否为上传文件. 2. 通过HandlerMapping获取HandlerExecutionChain: DispatcherServlet 中包含:handlerMappings , 遍历 ...
- NIO 01 (转)
本文转自:http://www.cnblogs.com/littlehann/p/3720396.html 目录 1. NIO.NIO.2简介 2. NIO中的关键技术 1. NIO.NIO.2简介 ...
- react-native android 打包发布
react-native android 打包步骤 <一>.生成签名文件(应用身份证) 1.使用keytool命令 keytool -genkey -v -keystore my-r ...
- Decker容器使用
Docker 客户端 我们可以直接输入 docker 命令来查看到 Docker 客户端的所有命令选项 root@ranxf:/home/ranxf# docker Usage: docker COM ...
- 巨坑:jqgrid竟然取不到编辑模式下input的值
今天遇到最奇葩的问题,竟然取不到input的值,感觉世界观都颠覆了.后来一搜资料,又是jqgrid框架搞的鬼,真搞不明白,开发框架就好好开发框架,留这么多坑有意思吗? jqgrid编辑模式下不要调用g ...