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:函数返回值的参数名称需要额外增加符号?表示是变量。

MySQL 调用存储过程相关推荐

  1. python调用数据库存储过程_python连接mysql调用存储过程示例

    复制代码 代码如下: #!/usr/bin/env python # -*- coding: utf8 -*- import MySQLdb import time import os, sys, s ...

  2. mysql 调用存储过程 inout_MySQL存储过程in、out和inout参数示例和总结

    存储过程 1.创建存储过程并查看全局变量 mysql> create database yy; Query OK, 1 row affected (0.00 sec) mysql> use ...

  3. MySQL调用存储过程

    使用存储过程,可以使程序执行效率更高,安全性更好,增强程序的可重用性和维护性 调用存储过程 存储过程有多种调用方法 存储过程必须使用CALL语句调用,并且,存储过程和数据库相关,如果,要执行其他数据库 ...

  4. 为什么mysql调用存储过程总是错误_使用存储过程时一个错误的解决方法_MySQL

    jackxm(原作) 这段时间用了一下C Builder ,在调用存储过程的时候遇到了一些问题,问了很多地方都没有找到答案,最后还是靠自己,现在拿出来和大家分享. 示例代码: StoredProc1- ...

  5. mybatis mysql 调用存储过程 多个返回值_被Mybatis坑惨了

    关注米兜Java并置顶,一起涨姿势- 关注米兜 Spring 2020     热点推荐 1 抛去try {...} catch {...} finally {...},让代码更轻便 2 无所不能的J ...

  6. MySQL 调用存储过程 错误代码: 1366 Incorrect string value: '\xE7\x8E\x8B\xE4\xBA\x94'

    在使用 mysql创建好存储过程,调用时出现错误: 错误代码: 1366  Incorrect string value: '\xE7\x8E\x8B\xE4\xBA\x94',由于1366是编码问题 ...

  7. mybatis mysql 调用存储过程 多个返回值_图解MyBatis的SQL执行流程(干货)

    前言 MyBatis可能很多人都一直在用,但是MyBatis的SQL执行流程可能并不是所有人都清楚了,那么既然进来了,通读本文你将收获如下: 1.Mapper接口和映射文件是如何进行绑定的 2.MyB ...

  8. mybatis mysql 调用存储过程 多个返回值_MyBatis的SQL执行流程不清楚?很简单!

    点击上方蓝色字体,选择"标星公众号" 优质文章,第一时间送达 作者:双子孤狼- blog.csdn.net/zwx900102/article/details/108455514 ...

  9. mysql调用存储过程耗费时间吗_mysql调用存储过程耗费时间吗

    {"moduleinfo":{"card_count":[{"count_phone":1,"count":1}],&q ...

最新文章

  1. 14大招打造你的平面设计创意
  2. Alpha冲刺随笔集
  3. BZOJ 1016--[JSOI2008]最小生成树计数(kruskal搜索)
  4. 收集计算机网络经典的面试题
  5. 昨天飞鸽传书可能是因为太累了
  6. 手机在线运行python_让Python程序在线执行
  7. 数据结构与算法笔记(二) 线性表(数组描述)
  8. delegate、notification、KVO各优缺点
  9. 阿里云块存储、对象存储(OSS)、文件存储(NAS)的区别?
  10. 精心收集的jQuery常用的插件1000
  11. 一代私募传奇落幕:黑石创始人彼得森留下4000亿美元离世
  12. EndNoteX9插入参考文献
  13. 计算机科学与技术真的会掉头发吗,大学里容易“掉头发”的3个专业,为了防秃头,大家慎重报考!...
  14. Progressive Domain Adaptation from Source Pre-trained Model
  15. Qt小项目(二):调色器
  16. API接口开发其实特简单,Python Flask Web 框架教程来了
  17. 智佩店装完成千万级天使轮融资,深耕连锁店装
  18. 科目三考试项目分类评判标准
  19. 原声JS瀑布流加延迟加载
  20. Linux环境下编译并执行ava helloworld程序

热门文章

  1. java中多线程 - 多线程中的基本方法
  2. Spring中ApplicationContext加载机制
  3. Android内存泄漏问题(一)
  4. tcp client.cs
  5. win2008的搜索功能就是个鸡肋
  6. Effective Objective-C 2.0 初读小结
  7. vue调用百度地图API
  8. BZOJ2216: [Poi2011]Lightning Conductor
  9. http://www.cda.cn/view/25735.html
  10. Python中正则表达式讲解