MySQL 调用存储过程
1:存储过程返回值
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:函数
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(); }
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:返回记录集
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:返回二进制
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:函数返回值的参数名称需要额外增加符号?表示是变量。
MySQL 调用存储过程相关推荐
- python调用数据库存储过程_python连接mysql调用存储过程示例
复制代码 代码如下: #!/usr/bin/env python # -*- coding: utf8 -*- import MySQLdb import time import os, sys, s ...
- mysql 调用存储过程 inout_MySQL存储过程in、out和inout参数示例和总结
存储过程 1.创建存储过程并查看全局变量 mysql> create database yy; Query OK, 1 row affected (0.00 sec) mysql> use ...
- MySQL调用存储过程
使用存储过程,可以使程序执行效率更高,安全性更好,增强程序的可重用性和维护性 调用存储过程 存储过程有多种调用方法 存储过程必须使用CALL语句调用,并且,存储过程和数据库相关,如果,要执行其他数据库 ...
- 为什么mysql调用存储过程总是错误_使用存储过程时一个错误的解决方法_MySQL
jackxm(原作) 这段时间用了一下C Builder ,在调用存储过程的时候遇到了一些问题,问了很多地方都没有找到答案,最后还是靠自己,现在拿出来和大家分享. 示例代码: StoredProc1- ...
- mybatis mysql 调用存储过程 多个返回值_被Mybatis坑惨了
关注米兜Java并置顶,一起涨姿势- 关注米兜 Spring 2020 热点推荐 1 抛去try {...} catch {...} finally {...},让代码更轻便 2 无所不能的J ...
- MySQL 调用存储过程 错误代码: 1366 Incorrect string value: '\xE7\x8E\x8B\xE4\xBA\x94'
在使用 mysql创建好存储过程,调用时出现错误: 错误代码: 1366 Incorrect string value: '\xE7\x8E\x8B\xE4\xBA\x94',由于1366是编码问题 ...
- mybatis mysql 调用存储过程 多个返回值_图解MyBatis的SQL执行流程(干货)
前言 MyBatis可能很多人都一直在用,但是MyBatis的SQL执行流程可能并不是所有人都清楚了,那么既然进来了,通读本文你将收获如下: 1.Mapper接口和映射文件是如何进行绑定的 2.MyB ...
- mybatis mysql 调用存储过程 多个返回值_MyBatis的SQL执行流程不清楚?很简单!
点击上方蓝色字体,选择"标星公众号" 优质文章,第一时间送达 作者:双子孤狼- blog.csdn.net/zwx900102/article/details/108455514 ...
- mysql调用存储过程耗费时间吗_mysql调用存储过程耗费时间吗
{"moduleinfo":{"card_count":[{"count_phone":1,"count":1}],&q ...
最新文章
- 14大招打造你的平面设计创意
- Alpha冲刺随笔集
- BZOJ 1016--[JSOI2008]最小生成树计数(kruskal搜索)
- 收集计算机网络经典的面试题
- 昨天飞鸽传书可能是因为太累了
- 手机在线运行python_让Python程序在线执行
- 数据结构与算法笔记(二) 线性表(数组描述)
- delegate、notification、KVO各优缺点
- 阿里云块存储、对象存储(OSS)、文件存储(NAS)的区别?
- 精心收集的jQuery常用的插件1000
- 一代私募传奇落幕:黑石创始人彼得森留下4000亿美元离世
- EndNoteX9插入参考文献
- 计算机科学与技术真的会掉头发吗,大学里容易“掉头发”的3个专业,为了防秃头,大家慎重报考!...
- Progressive Domain Adaptation from Source Pre-trained Model
- Qt小项目(二):调色器
- API接口开发其实特简单,Python Flask Web 框架教程来了
- 智佩店装完成千万级天使轮融资,深耕连锁店装
- 科目三考试项目分类评判标准
- 原声JS瀑布流加延迟加载
- Linux环境下编译并执行ava helloworld程序
热门文章
- java中多线程 - 多线程中的基本方法
- Spring中ApplicationContext加载机制
- Android内存泄漏问题(一)
- tcp client.cs
- win2008的搜索功能就是个鸡肋
- Effective Objective-C 2.0 初读小结
- vue调用百度地图API
- BZOJ2216: [Poi2011]Lightning Conductor
- http://www.cda.cn/view/25735.html
- Python中正则表达式讲解