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 ...
随机推荐
- 使用IDEA 创建Servlet 的时候,找不到javax.servlet
使用IDEA 开发工具,创建Servlet 文件的时候,出现了下面的这种错误, 解决步骤如下: 第一步:点击 File 第二步:找到Project Structure,点击,然后按照下图顺序操作,添加 ...
- json转List、Map
import java.util.ArrayList; import java.util.HashMap; import java.util.Iterator; import java.util.Li ...
- intellij-idea打包Scala代码在spark中运行
.创建好Maven项目之后(记得添加Scala框架到该项目),修改pom.xml文件,添加如下内容: <properties> <spark.version></spar ...
- 在vue项目中使用codemirror插件实现代码编辑器功能(代码高亮显示及自动提示
在vue项目中使用codemirror插件实现代码编辑器功能(代码高亮显示及自动提示) 1.使用npm安装依赖 npm install --save codemirror; 2.在页面中放入如下代码 ...
- JS正则表达式从入门到入土(7)—— 分组
分组 在使用正则的时候,有时候会想要匹配一串字符串连续出现多次的情况,比如:我想匹配字符串Byron连续出现3次的情况. 有些人会直接写: Byron{3} 但是,这种情况仅仅会匹配Byro加上三个n ...
- Python面试题之Python迭代器
要理解迭代器,首先要从字面意思来说. 迭代 重复 下一次重复基于上一次的结果 软件开发就是典型的迭代更新. 讲迭代,我们就先来模拟一下迭代: 现在让我们使用while循环来遍历出一个列表list1 = ...
- 关于MVC打印问题,打印指定的内容
首先你的内容一定要放在一个div中如下代码 <div id="divprint"> <table class="table table-striped ...
- JDBC 的 PreparedStatement 与 Statement
import java.sql.Connection; import java.sql.DriverManager; import java.sql.PreparedStatement; import ...
- C# 导出导入TXT文件
导出TXT关键类: using System; using System.Collections.Generic; using System.Linq; using System.Text; usin ...
- codeforces570D Tree Requests
题目链接:codeforces570D 正解:$dsu$ $on$ $tree$ 解题报告: 考虑这又是一类子树内的不带修改统计问题,直接上$dsu$ $on$ $tree$好咯. 直接按上一道题的做 ...