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

  • 相关阅读:
    FastJson---高性能JSON开发包
    mybatis中大于等于小于等于的写法
    MarkDown 使用说明示例
    Get和Post的参数传值
    规则引擎 资料收集
    ORA-01033错误解决方案
    mybatis 参数为String,用_parameter 取值
    php中实现记住密码下次自动登录的例子
    php 应用 bootstrap-fileinput 上传文件 插件 操作的方法
    AJAX 跨域请求
  • 原文地址:https://www.cnblogs.com/tommyli/p/2433332.html
Copyright © 2011-2022 走看看