MySQL 调用存储过程

1:存储过程返回值

View Code
        public void InputOutputParameters()
{
AdoHelper ado = AdoHelper.CreateHelper(DbProvideType.MySql);

ado.ExecuteNonQuery(conn, CommandType.Text, "CREATE PROCEDURE spTest1( INOUT strVal VARCHAR(50), INOUT numVal INT, OUT outVal INT UNSIGNED ) " +
"BEGIN SET strVal = CONCAT(strVal,'ending'); SET numVal=numVal * 2; SET outVal=99; END");

IDataParameter[] param1 = new IDataParameter[]{
ado.GetParameter("numVal", DbType.Int32, ParameterDirection.InputOutput),
ado.GetParameter("strVal", DbType.String, ParameterDirection.InputOutput),
ado.GetParameter("outVal", DbType.UInt64, ParameterDirection.Output)
};
//存储过程参数按照名称对应
param1[1].Value = "beginning";
param1[0].Value = 32;
ado.ExecuteNonQuery(conn, CommandType.StoredProcedure, "spTest1", param1);
Console.ReadLine();
}

2:函数

View Code
        public void FunctionNoParams()
{
AdoHelper ado = AdoHelper.CreateHelper(DbProvideType.MySql);

ado.ExecuteNonQuery(conn, CommandType.Text, "CREATE FUNCTION fnTest() RETURNS CHAR(50)" +
" LANGUAGE SQL DETERMINISTIC BEGIN RETURN \"Test\"; END");

object obj = ado.ExecuteScalar(conn, CommandType.Text, "SELECT fnTest()");
Console.ReadLine();
}
View Code
        public void CallingStoredFunctionasProcedure()
{
AdoHelper ado = AdoHelper.CreateHelper(DbProvideType.MySql);

ado.ExecuteNonQuery(conn, CommandType.Text, "CREATE FUNCTION fnTest1(valin int) RETURNS INT " +
" LANGUAGE SQL DETERMINISTIC BEGIN return valin * 2; END");

IDataParameter[] param1 = new IDataParameter[]{
ado.GetParameter("?rt", DbType.Int32, ParameterDirection.ReturnValue),
ado.GetParameter("valin", DbType.Int32, 16),
};
//Return 函数必须加?符号
object obj = ado.ExecuteScalar(conn, CommandType.StoredProcedure, "fnTest1", param1);
Console.ReadLine();
}

3:返回记录集

View Code
        public void ReturningEmptyResultSet()
{
AdoHelper ado = AdoHelper.CreateHelper(DbProvideType.MySql);

ado.ExecuteNonQuery(conn, CommandType.Text, "CREATE TABLE test21 (id int AUTO_INCREMENT NOT NULL, " +
"Name VARCHAR(100) NOT NULL, PRIMARY KEY(id))");

ado.ExecuteNonQuery(conn, CommandType.Text, "CREATE TABLE test22 (id int AUTO_INCREMENT NOT NULL, " +
"id1 INT NOT NULL, id2 INT NOT NULL, PRIMARY KEY(id))");

ado.ExecuteNonQuery(conn, CommandType.Text, "INSERT INTO test21 (Id, Name) VALUES (1, 'Item1')");
ado.ExecuteNonQuery(conn, CommandType.Text, "INSERT INTO test21 (Id, Name) VALUES (2, 'Item2')");
ado.ExecuteNonQuery(conn, CommandType.Text, "INSERT INTO test22 (Id, Id1, Id2) VALUES (1, 1, 1)");
ado.ExecuteNonQuery(conn, CommandType.Text, "INSERT INTO test22 (Id, Id1, Id2) VALUES (2, 2, 1)");
ado.ExecuteNonQuery(conn, CommandType.Text, "CREATE PROCEDURE spTest2(Name VARCHAR(100), OUT Table1Id INT) " +
"BEGIN SELECT t1.Id INTO Table1Id FROM test21 t1 WHERE t1.Name LIKE Name; " +
"SELECT t3.Id2 FROM test22 t3 WHERE t3.Id1 = Table1Id; END");

IDataParameter[] param1 = new IDataParameter[]{
ado.GetParameter("Name", DbType.String, "Item2"),
ado.GetParameter("Table1Id", DbType.Int32, ParameterDirection.Output)
};
//Return 函数必须加?符号
using (DataSet ds = ado.ExecuteDataset(conn, CommandType.StoredProcedure, "spTest2", param1))
{
Console.ReadLine();
}

}

4:返回二进制

View Code
        public void BinaryAndVarBinaryParameters()
{
AdoHelper ado = AdoHelper.CreateHelper(DbProvideType.MySql);

ado.ExecuteNonQuery(conn, CommandType.Text, "CREATE PROCEDURE spTest3(OUT out1 BINARY(20), OUT out2 VARBINARY(20)) " +
"BEGIN SET out1 = 'out1'; SET out2='out2'; END");


IDataParameter[] param1 = new IDataParameter[]{
ado.GetParameter("out1", DbType.Object, ParameterDirection.Output),
ado.GetParameter("out2", DbType.Object, ParameterDirection.Output)
};

ado.ExecuteNonQuery(conn, CommandType.StoredProcedure, "spTest3", param1);
Console.ReadLine();
}

总结

1:MySql的存储过程参数赋值是按照名称对应的。

2:函数返回值的参数名称需要额外增加符号?表示是变量。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/267192.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

佳博热敏条码打印机修改ip_高赋码热转印打印和热敏打印区别

在热转印打印中,热敏打印头给色带加热,油墨熔化在标签材料上以形成图案。色带材料被介质吸收,图案构成了标签的一部分。该技术提供了其他按需式打印技术无法匹敌的图案质量和耐久性。与热敏打印机相比,热转印打印机可接受更多品种…

cocos2d的常用动作及效果总结之五:Animation

这一篇是讲一下如何在cocos2d中实现动画。 实现动画的步骤: 加载帧生成动画对象运行动画加载帧我用过两种方式: 第一种是使用.plist文件,通过CCSpriteFrameCache读取动画帧,并加载到CCAnimation对象中,如下&#xff1a…

雷鸟html签名设置,thunderbird 使用OpenPGP加解密邮件

一、添加插件Enigmail二、进行密钥管理,并创建->新密钥对三、选择账户,选择有无密码,创建密钥。根据提示选择是否要撤销文件。选择无密码创建密钥对速度快。最好选择生成撤销证书,在以后密钥对无用时告诉密钥服务器撤销无效公钥…

男生学计算机哪专业好,男生学计算机科学与技术专业好不好有前途吗

每年都有很多考生在填报志愿的时候,会选择填报计算机科学与技术专业。那么,男生学计算机科学与技术专业好吗?下面和小编一起来看看吧!男生适合学计算机科学与技术专业吗计算机科学与技术专业主要培养具有良好的科学素养&#xff0…

字符串不替代_TI-Nspire 系列的字符串操作

本文遵循 CC BY-NC-SA 协议。一 前言在编程中,对字符串进行操作是很常见的。但是TI-Nsipre 对字符进行操作的函数有限,缺少一些如在字符串中插入字符、删除字符等常用功能,给编程带来不便。笔者经过研究,实现了在字符串中插入字符…

如何在Win Server 2008R2环境下,把域帐户加到本地管理员组??

如何在Win Server 2008R2环境下,把域帐户加到本地管理员组 我们在大型企业中,经常不会用域管理员登陆,而是将某个OU下特定用户加入到全局组,或者将某个用户加入到本地管理员组中,但是局域网庞大,不可能一个…

3ds Max 2018 在安装后无法启动或出现不稳定

问题: 安装 3ds Max 2018 后,软件无法正常启动,或在打开后不久出现不稳定和崩溃。 原因: 有多种原因可能会导致这些错误: ▪ 3ds Max、Windows 更新和 ProSound.dlc 声音驱动程序之间发生冲突; ▪ Windows …

怎样用计算机算出别人的出生日期,【怀孕出生日期计算器_怀孕出生日期计算器专题】- 天鹅到家...

很多要想比较技术专业且精确地预测分析自身的排卵期的女性、要想怀孕或避开怀孕的女性,或是要想根据对排卵期的预测分析,根据排卵期時间的不一,对生理学病症做出一些预防的女性,能够运用女性排卵期计算器。女性排卵期计算器可以根…

c++中内敛函数_C/C++求职者必备 23 道面试题,一道试题一份信心

1、 Static有什么用途?(1)函数体内static变量的作用范围是该函数体,该变量的内存只被分配一次,因此它的值在下次调用时不变; (2)模块内的static全局变量同样只能在该模块内的函数访问和调用,不能被模块外的其他函数访问…

不安装oracle客户端如何用plsql连接oracle

https://jingyan.baidu.com/article/d2b1d1029f2bbb5c7e37d4f4.html转载于:https://www.cnblogs.com/feifeicui/p/8949725.html

计算机专业研究生面试英语翻译,20考研复试英语面试最强攻略,都是干货!

原标题:20考研复试英语&面试最强攻略,都是干货!考研初试千辛万苦通过,成功就在眼前,可是偏偏中间还有复试英语这个拦路虎,复试中的英语环节每年让不少同学都很紧张,要想对答如流&#xff0c…

克隆虚拟机启动网卡提示错误 Device eth0 does not seem to be present, delaying initialization...

错误原因: 克隆的Linux系统在新的机器上运行,新服务器网卡物理地址已经改变。而/etc/udev/rules.d/70-persistent-net.rules这个文件确定了网卡和MAC地址的信息之间的绑定,克隆后的网卡的MAC已经发生了变化,所以导致系统认为网络设…

启动图一键生成工具_一键即运行!清华团队推出图深度学习工具包CogDL v0.1

一行代码命令可以做什么?“一行命令可以实现‘一条龙’运行实验。”访问 http://github.com/THUDM/cogdl 一键体验!近年来,结构化数据的表示学习备受业界关注与热捧,图神经网络成为处理相关工作的有力工具,基于随机游走…

[转]GCC 命令行详解 -L 指定库的路径 -l 指定需连接的库名

1。gcc包含的c/c编译器gcc,cc,c,g,gcc和cc是一样的,c和g是一样的,(没有看太明白前面这半句是什么意思:))一般c程序就用gcc编译,c程序就用g编译2。gcc的基本用法gcc test.c这样将编译出一个名为a.out的程序gcc test.c -o test这样将编译出一个…

用计算机算判定系数,使用系数

使用系数是设备的使用时间与允许使用时间的比值。通常以一年累积的时间为计算范围。使用系数x年使用小时基数年使用小时数。例如,一台电机每天工作八小时,一年50周,那么一年电机工作的时候是2000小时。如果电机是连续工作制,一年有…

python2 openpyxl 复制excel内容到新的excel文件中 告警问题

该方法。由上海悠悠提供。可关注上海-悠悠的博客园def CopyExcel(Excelpath1,Excelpath2):#新建excelwb2openpyxl.Workbook()wb2.save(Excelpath2)print(新建成功)#读取数据wb1 openpyxl.load_workbook(Excelpath1)wb2 openpyxl.load_workbook(Excelpath2)sheets1 wb1.get_s…

工业机器人 扬州 江都_扬州市14家企业获批2019年江苏省示范智能车间

近日,我省正式发布2019年江苏省示范智能车间名单,所谓智能车间,是指将机器人、智能设备、信息技术三者在制造过程中全流程融合,实现自动决策、精确执行命令、精益管理。2019年,扬州市潍柴扬柴、新联汽车、江淮汽车等14…

超级强大的心理定律~~!你可以变成你想要的样子!~

这是转载的一篇文章。1、当你对某件事情抱着百分之一万的相信,它最后就会变成事实。 2、期望定律 期望定律告诉我们,当我们怀着对某件事情非常强烈期望的时候,我们所期望的事物就会出现。 3、情绪定律 情绪定律告诉我们,人百分之百…

学材分析计算机一体化,计算机一体化教学的体会

计算机一体化教学的体会摘要目前计算机教学没有摆脱传统的课程教学模式,虽然在教学中存在实训教学的环节,但仍偏重于理论化知识的完整灌输,导致理论与实践没有融为一体。一体化教学模式打破了传统的理论与实践教学的界限,是解决专…

pcb设计单点接地示意图_答案:关于PCB 的EMC设计知识考卷

(评分标准:本试卷作为培训效果评价依据,试卷满分为100分) ____________________________________________________________________________________________________________ 一、 判断题(每题2分) 1.塑料外壳产品的EMC性能只取决于PCB设计,与电缆的位置和PCB之间的…