一.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如何改写的更多相关文章

  1. Sqlserver中存储过程,触发器,自定义函数(一)

    Sqlserver中存储过程,触发器,自定义函数 1.存储过程有关内容存储过程的定义:存储过程的分类:存储过程的创建,修改,执行:存储过程中参数的传递,返回与接收:存储过程的返回值:存储过程使用游标. ...

  2. SqlServer中存储过程中将Exec的执行结果赋值给变量输出

    原文 SqlServer中存储过程中将Exec的执行结果赋值给变量输出 背景: 遇到这样一种情况:动态向存储过程中传入表名和表的某些属性(这里用到的是主键ID),然后利用这两个变量查出一条数据的某些字 ...

  3. Sqlserver中存储过程,触发器,自定义函数(二)

    Sqlserver中存储过程,触发器,自定义函数: 自定义函数:1.函数类型:2.函数的参数和返回值: 1.函数类型:标量值函数,返回的是一个标量值表值函数:内联表值函数:多语句表值函数. 标量值函数 ...

  4. Sqlserver中存储过程,触发器,自定义函数

    Sqlserver中存储过程,触发器,自定义函数: 1. 触发器:是针对数据库表或数据库的特殊存储过程,在某些行为发生的时候就会被激活 触发器的分类: DML触发器:发生在数据操作语言执行时触发执行的 ...

  5. SQLServer 中存储过程

    SQLServer 中存储过程返回的三种方式( 包括存储过程的创建, 在存储过程中调用, 在VS中调用的方法)存储过程有三种返回:   1.   用return返回数字型数据   2.   用返回参数 ...

  6. SQLServer中存储过程StoredProcedure创建及C#调用(转)

    此文作为入门了解用,转自http://www.2cto.com/database/201502/378260.html 存储过程就是已经编译好的.优化过的放在数据库服务器中的一些SQL语句:可供应用程 ...

  7. sqlserver 中存储过程的基础知识记录

    1.什么是存储过程? 存储过程就是作为可执行对象存放在数据库中的一个或多个SQL命令. 通俗来讲:存储过程其实就是能完成一定操作的一组SQL语句. 2.为什么要用存储过程? 1)存储过程只在创建时进行 ...

  8. Sqlserver中存储过程和游标的一些使用例子

    /*带输入输出参数存储过程*/ ALTER PROCEDURE pro_test2 @userID INT, @maxUserID INT OUTPUT, @countUser INT OUTPUT ...

  9. SqlServer和MySQL中存储过程out返回值处理C#代码

    1.SqlServer中out处理 C#代码 #region"SqlServer中存储过程处理out返回值" //public void getdata() //{ // stri ...

随机推荐

  1. 跨域问题-jsonp

    前端同源策略并不会拦截静态资源请求,那么就将接口伪装成资源,然后后端配合返回一个前端预定义的方法调用,将返回值放入调用该函数的形参即可 <!DOCTYPE html> <html l ...

  2. cocos2dx 3.x 精灵重叠时点击最上层的精灵

    ps. 这个方法只适用设置精灵的触摸.. //注册触摸事件..3.X后可以在这样写..不需要重新声明 EventListenerTouchOneByOne *listener = EventListe ...

  3. Twitter的分布式自增ID算法snowflake

    snowflake 分布式场景下获取自增id git:https://github.com/twitter/snowflake 解读: http://www.cnblogs.com/relucent/ ...

  4. CSS Tooltip(提示工具)

    CSS Tooltip(提示工具) 提示工具在鼠标移动到指定元素后触发,可以在四个方位显示:头部显示.右边显示.左边显示.底部显示 一.基础提示框(Tooltip) 提示框在鼠标移动到指定元素上显示: ...

  5. MVc分页【关于使用扩展方法实现MVc分页】

    近期对MVc自定义分页作了一下小研究下面把他记下来 下述代1,2,3里面的代码可以直接拷贝,4以后的根据情况自己选定 1.在后台任写如下的扩展方法(任一类库都可以,但是用时得引用命名空间) // 添加 ...

  6. python error: curl: (1) Protocol "'https" not supported or disabled in libcurl

    python 调用curl访问一个网页时,出现error: curl: (1) Protocol "'https" not supported or disabled in lib ...

  7. 20135320赵瀚青LINUX第十八章读书笔记

    概述:调试工作艰难是内核级开发区别于用户级开发的一个显著特点 18.1准备开始 内核调试往往是一个令人挠头不已的漫长过程.幸运的是,在这些费劲的问题中也有不少比较简单而且容易消灭的小bug,运气好你可 ...

  8. 2009-2010 ACM-ICPC, NEERC, Western Subregional Contest

    2009-2010 ACM-ICPC, NEERC, Western Subregional Contest 排名 A B C D E F G H I J K L X 1 0 1 1 1 0 1 X ...

  9. office使用技巧

    一.excel 1.在空格内换行:ALT+ENTER 2.打出勾:插入->符号

  10. Linux升级内核总结

    Linux内核升级总结. 一.编译内核步骤 1.#uname –r 确定系统的原内核版本,然后下载较新版本的Linux内核源码包 http://www.kernel.org/pub/linux/ker ...