精华内容
下载资源
问答
  • MySQL开发的存储过程几乎都需要参数。这些参数使存储过程更加灵活和有用。 在MySQL中,参数有三种模式:IN,OUT或INOUT。1,单参数 inDELIMITER $$USE dc3688$$CREATE PROCEDURE GetOfficeByCountry(IN countryName ...

    MySQL开发的存储过程几乎都需要参数。这些参数使存储过程更加灵活和有用。 在MySQL中,参数有三种模式:IN,OUT或INOUT。

    1,单参数 in

    DELIMITER $$

    USE dc3688$$

    CREATE PROCEDURE GetOfficeByCountry(IN countryName VARCHAR(255))

    BEGIN

    SELECT *

    FROM offices

    WHERE country = countryName;

    END$$

    DELIMITER ;

    2,多参数 (in out)

    DELIMITER $$

    CREATE PROCEDURE CountOrderByStatus(

    IN orderStatus VARCHAR(25),

    OUT total INT)

    BEGIN

    SELECT count(orderNumber)

    INTO total

    FROM orders

    WHERE status = orderStatus;

    END$$

    DELIMITER ;

    调用方法

    CALL CountOrderByStatus('Shipped',@total);

    SELECT @total;

    3,参数 inout

    DELIMITER $$

    CREATE PROCEDURE set_counter(INOUT count INT(4),IN inc INT(4))

    BEGIN

    SET count = count + inc;

    END$$

    DELIMITER ;

    调用过程

    SET @counter = 1;

    CALL set_counter(@counter,1);

    可以实际操作一下不同参数用法

    文章来自 www.dc3688.com

    展开全文
  • 存储过程:create procedure Pro_GetUserInfo(in szEmpName varchar(1000))-> begin-> declare strSql varchar(1000);-> set strSql = concat('insert intoTmpTable_UserInfo(EmpName,PcName,IP) select ...

    存储过程:

    create procedure Pro_GetUserInfo(in szEmpName varchar(1000))

    -> begin

    -> declare strSql varchar(1000);

    -> set strSql = concat('insert into

    TmpTable_UserInfo(EmpName,PcName,IP) select EmpName,PcName,IP from

    T_SC_UserManager where EmpName in (', szEmpName, ')');

    -> drop table if exists TmpTable_UserInfo;

    -> create temporary table TmpTable_UserInfo(EmpName varchar(32)

    not null, PcName varchar(32) not null, IP varchar(32) not null);

    -> set @sql1 = strSql;

    -> prepare stmt_p from @sql1;

    -> execute stmt_p;

    -> end

    ->

    调用:

    call Pro_GetUserInfo("'172.16.10.2','172.16.10.21'"); // 参数用双引号,其实用单引号也行,但是如果参数里有引号就乱套了

    下面的方法不行:

    create procedure Pro_GetUserInfo(in szEmpName varchar(1000))

    -> begin

    -> drop table if exists TmpTable_UserInfo;

    -> create temporary table TmpTable_UserInfo(EmpName varchar(32)

    not null, PcName varchar(32) not null, IP varchar(20) not null);

    -> insert into TmpTable_UserInfo(EmpName, PcName, IP) select EmpName, PcName, IP from T_SC_UserManager where EmpName in(szEmpName); // 不能直接传进来,如果直接传进来,展开为in("'172.16.10.2','172.16.10.21'"),带着双引号

    -> end

    ->

    展开全文
  • -SELECT * FROM #temp_delete DROP TABLE #temp_insert DROP TABLE #temp_delete END 这是我写的一个MSSQL的存储过程 参数@XML_ARRAY的数据格式是: '' 用openXML解析 想问下如果用mysql解决应该怎么做,如何传递一个...

    该楼层疑似违规已被系统折叠 隐藏此楼查看此楼

    ALTER PROCEDURE [dbo].[Proce_Building_Relation_RP]

    -- Add the parameters for the stored procedure here

    @RID BIGINT, -- 角色id

    @XML_Array varchar(500), -- 代表权限的id序列化字符串

    @Rowcount INT=0 OUTPUT

    AS

    BEGIN

    -- SET NOCOUNT ON added to prevent extra result sets from

    -- interfering with SELECT statements.

    --SET NOCOUNT ON;

    DECLARE @IdHandel INT

    CREATE TABLE #temp_insert(RID BIGINT,Nums BIGINT)

    CREATE TABLE #temp_delete(RID BIGINT,Nums BIGINT)

    EXEC sp_xml_preparedocument @IdHandel OUTPUT, @XML_Array

    -- 填充与源数据不重复的数值的表

    INSERT INTO #temp_insert(RID,Nums)

    SELECT @RID,N.Nums

    FROM OPENXML(@IdHandel,'/Array/PA') WITH(Nums BIGINT) AS N

    WHERE N.[Nums] IS NOT NULL

    AND (Nums not in (select pid from Sys_User_Relation_RP where rid=@RID) )

    -- 填充与源数据重复的数值的表

    INSERT INTO #temp_delete(RID,Nums)

    SELECT @RID,N.Nums

    FROM OPENXML(@IdHandel,'/Array/PA') WITH(Nums BIGINT) AS N

    WHERE N.[Nums] IS NOT NULL

    AND (Nums in (select pid from Sys_User_Relation_RP where rid=@RID) )

    -- 向表插入与数组参数不重复的数值

    INSERT INTO Sys_User_Relation_RP(rid,pid) SELECT RID,Nums FROM #temp_insert

    SET @Rowcount=@@ROWCOUNT

    -- 删除表中与数组参数重复的数值

    DELETE FROM Sys_User_Relation_RP WHERE rid=@RID and pid in (SELECT Nums FROM #temp_delete WHERE RID=@RID)

    SET @Rowcount=@Rowcount+@@ROWCOUNT

    EXEC sp_xml_removedocument @IdHandel

    --SELECT * FROM #temp_insert

    --SELECT * FROM #temp_delete

    DROP TABLE #temp_insert

    DROP TABLE #temp_delete

    END

    这是我写的一个MSSQL的存储过程

    参数@XML_ARRAY的数据格式是:

    ''

    用openXML解析

    想问下如果用mysql解决应该怎么做,如何传递一个序列化字符串然后解析

    展开全文
  • 存储过程传递对象参数思路案例 思路 将对象封装成xml,传递给数据库,再使用解析XML将数据放入临时表 案例 declare @ExcelData_XML xml = N'<Root><Record Customer="UQ" SO_No="01247N231" Material_No="5...

    存储过程传递对象参数

    思路

    将对象封装成xml,传递给数据库,再使用解析XML将数据放入临时表

    案例

    declare @ExcelData_XML xml = N'<Root><Record Customer="UQ" SO_No="01247N231" Material_No="5P1704001G" Style_No="01247N231"/><Record Customer="UQ" SO_No="01247N231" Material_No="5P1704001G" Style_No="01247N231"/></Root>'
    
    --创建临时表
    IF Object_Id('tempdb.dbo.#xmlTable') is not null  
    	drop table #xmlTable  
    create table #xmlTable  
    (  
        [Customer] [varchar](30)  NULL, 
        [SO_No] [varchar](20)  NULL, 
        [Material_No] [varchar](30)  NULL, 
        [Style_No] [varchar](100)  NULL
    ) 
    -- 解析xml并将数据插入到临时表中
    if @ExcelData_XML is not null  
        begin  
            DECLARE @xmlHandle int  
            EXEC sp_xml_preparedocument @xmlHandle OUTPUT, @ExcelData_XML   
            insert #xmlTable  
              (  
               [Customer],[SO_No],[Material_No],[Style_No]
              )  
            SELECT [Customer],[SO_No],[Material_No],[Style_No]
          
            FROM  OPENXML (@xmlHandle, '/Root/Record',1)   
            WITH  
            (  
            [Customer] [varchar](30), 
            [SO_No] [varchar](20), 
            [Material_No] [varchar](30), 
            [Style_No] [varchar](100)
            )  
            EXEC sp_xml_removedocument @xmlHandle  
        end 
    
    展开全文
  • 我尝试使用csv作为数据源,并从mysql数据库调用一个存储过程来填充数据库。我当前正在获取异常:发生异常:(1318,“过程参数数目不正确。”mydb.update_服务器;应为3,得到0')import pymysql#import ...
  • create or replace procedure proc_emp(eno in number,sal out number)--带输入输出参数存储过程 as emp_records emp%rowtype;--声明一个记录类型用来存储结果集 begin select * into emp_records from emp where ...
  • --查询的值列表DECLARE @idlist varchar(100)SET @idlist='1,2,3'--拼接并执行动态Transact-SQL语句EXEC('SELECT * FROM tbname WHERE fdname IN('+@idlist+')')GO--b. 要查询的字段类型是字符型--查询的值列表已经...
  • mysql存储过程功能弱问题一直是大家关注的问题,今天讲一下Mysql存储过程无法传递数组类型参数的解决方案。在很多的情况下,在编写存储过程中往往会用到数组,但是mysql中存储过程传入参数并没有可以直接传入数组的...
  • 1.java.lang.ClassCastException: oracle.jdbc.driver.T4CConnection cannot cast to oracle.jdbc.connection2.无效的列名称类型[@more@]第一个错误的解决分为两步:先把从jndi获取的数据源的connection转换为...
  • SET QUOTED_IDENTIFIER ONGOSET ANSI_NULLS ONGO--=================================================================-- 描述:~~~~~~~~~~~~~~~~~~~~~~~~~~~-- 作者:鲁湘-- @...
  • mybatis.xml配置:CALL procedureTest_02(#{user_login,mode=IN,jdbcType=VARCHAR},#{result_data,mode=OUT,jdbcType=CURSOR,javaType=java.sql.ResultSet,resultMap=BaseResultMap_...存储过程:create or replace...
  • MySQL 存储过程参数

    2021-01-18 19:14:57
    存储过程中定义IN参数时,调用程序必须将参数传递存储过程。 另外,IN参数的值被保护。这意味着即使在存储过程中更改了IN参数的值,在存储过程结束后仍保留其原始值。换句话说,存储过程只使...
  • 我能够使用Python从SQL存储过程中获得输出值。我找不到在Python中获取输出值的好帮手。我自己想出了Python语法,所以我怀疑这里值得一提:import sys, string, os, shutil, arcgisscriptingfrom win32...
  • 存储过程 in参数 的使用IN参数只用来向过程传递信息,为默认值。-- 存储过程中 in 参数的 使用DELIMITER ;;CREATE PROCEDUREname_in(IN `time` VARCHAR(50))BEGINSELECT NOW() ,`time`;END ;;CALL name_in('现在时间...
  • 存储过程:create or replace procedure pro_test (retCode out number, retMsg out varchar2)vcrm v_prod_inst%ROWTYPE;use_cursor ref_cursor_type;vunit recharge.unit%TYPE;vsummoney recharge.recharge_money%...
  • SQL存储过程参数

    2021-04-16 00:12:02
    存储过程参数 存储过程可以有0个或多个参数,用于存储过程的定义。 3种参数类型: IN输入参数:表示调用者向过程传入值(传入值可以是字面量或变量) OUT输出参数:表示过程向调用者传出值(可以返回多个值)(传出...
  • 现在,过程本身: SQL> CREATE OR REPLACE PACKAGE BODY user_pkg IS 2 3 PROCEDURE insert_user(p_user user_tab) IS 4 BEGIN 5 FOR i IN 1..p_user.count LOOP 6 INSERT INTO "USER"("Name", "Surname", "Dt_Birth...
  • 首先,MySQL存储过程参数(输入)MySQL存储过程的“ in”参数: 类似于C语言的函数参数传递,可以在MySQL存储过程内部修改此参数,但是in类型参数的修改不适用于调用方(调用方)可见.drop procedure if exists pr_param_...
  • 发送prmMenusList作为整数列表而不是字符串:UPDATE RolesMenus SET Enabled=0 ...如果您的存储过程只进行了更新,我认为您可以编写整个函数,如:Public function enableMenus($selectedMenus, $roleID){$this->...
  • 一、MySQL 存储过程参数(in)MySQL 存储过程 “in” 参数:跟 C 语言的函数参数的值传递类似, MySQL 存储过程内部可能会修改此参数,但对 in 类型参数的修改,对调用者(caller)来说是不可见的(not visible)。...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 450,431
精华内容 180,172
关键字:

存储过程传递参数