精华内容
下载资源
问答
  • MySQL 通过存储过程简化INSERT和UPDATE处理目的,当数据表中存在目标记录时,执行UPDATE;当数据表中不存在目标记录时,执行INSERT;从而减少一次查询数据库的过程存储过程设计如下:CREATE PROCEDURE `pro_SaveData...

    MySQL 通过存储过程简化INSERT和UPDATE

    处理目的,当数据表中存在目标记录时,执行UPDATE;当数据表中不存在目标记录时,执行INSERT;从而减少一次查询数据库的过程

    存储过程设计如下:

    CREATE PROCEDURE `pro_SaveData`(IN `sinst` varchar(500),IN `supdt` varchar(500))

    BEGIN

    #直接更新记录

    set @v_updsql=supdt;

    prepare stmt from @v_updsql;

    EXECUTE stmt;

    #记录不存在,执行INSERT

    IF ROW_COUNT() =0 THEN

    set @v_intsql=sinst;

    prepare stmt from @v_intsql;

    EXECUTE stmt;

    END IF;

    deallocate prepare stmt;

    END;

    C#调用如下:

    int r = data.ExecuteNonQuery(System.Data.CommandType.StoredProcedure,

    @"CALL pro_SaveData (' INSERT INTO `table` VALUES ('1', 'username')',

    'UPDATE table SET name='table222' WHERE id='1';')", null);

    0b1331709591d260c1c78e86d0c51c18.png

    展开全文
  • 2、情况:a、创建了存储过程testProBEGINinsert INTO test (uid,kNum,mNum) VALUES (`uid`,`kNum`,`mNum`)ON DUPLICATE KEY UPDATE uid=`uid`,kNum=kNum+`kNum`,mNum=mNum+`mNum`;END输入参数为IN `uid` varchar(10)...

    1、问题如标题所示;

    2、情况:

    a、创建了存储过程testPro

    BEGIN

    insert INTO test (uid,kNum,mNum) VALUES (`uid`,`kNum`,`mNum`)

    ON DUPLICATE KEY UPDATE uid=`uid`,kNum=kNum+`kNum`,mNum=mNum+`mNum`;

    END

    输入参数为

    IN `uid` varchar(10),IN `kNum` int,IN `mNum` int

    b、构建表:

    DROP TABLE IF EXISTS `test`;

    CREATE TABLE `test` (

    `id` int(11) unsigned NOT NULL AUTO_INCREMENT,

    `kNum` int(11) DEFAULT NULL,

    `mNum` int(11) DEFAULT NULL,

    `uid` varchar(10) NOT NULL,

    PRIMARY KEY (`id`,`uid`),

    UNIQUE KEY `ske` (`uid`)

    ) ENGINE=InnoDB AUTO_INCREMENT=0 DEFAULT CHARSET=utf8;

    c、执行调用:

    call testPro('2017-11-24',0,1);

    第一次调用结果:

    73f8ca5971cd5e96db6f901570c92d85.png

    第二次调用结果:

    f532a84056a00143c3a9ef5d887cd2b2.png

    第三次调用时,就不会再累加了,结果如第二次调用一样;

    但如果,我们此时累加kNum一次:

    call testPro('2017-11-24',1,0);

    结果会变成这样:

    849874a0a0aa1fe01665d1d35cd4001d.png

    而且同样不能再继续累加;

    请各位看看这到底是什么问题。网上能找的我应该都找了,实在没能找到解释。最接近的也就这篇文章,但是试过没有效果:https://yq.aliyun.com/ziliao/...;

    展开全文
  • -- ************************************************-- 存储过程-- ************************************************-- 创建存储过程drop procedure if exists pld; -- 判断是否存储,存在则删除CREATE ...

    -- ************************************************

    -- 存储过程

    -- ************************************************

    -- 创建存储过程

    drop procedure if exists pld; -- 判断是否存储,存在则删除

    CREATE PROCEDURE pld(IN pid INT,OUT nm VARCHAR(100))

    BEGIN

    -- UPDATE userinfo SET uname = '八戒' WHERE id = pid;

    SELECT uname FROM userinfo WHERE id = pid INTO nm;

    END;

    -- 调用带返回值存储过程

    set @pd = 1;

    call pld(@pd,@a);

    SELECT @a as a;

    -- ************************************************

    -- 存储函数

    -- ************************************************

    -- 创建存储函数

    DROP FUNCTION IF EXISTS getName; -- 判断是否存在,存在则删除

    CREATE FUNCTION getName(gid INT) RETURNS VARCHAR(100)

    DETERMINISTIC

    BEGIN

    DECLARE unames VARCHAR(100);

    SET unames=(SELECT uname FROM userinfo WHERE id=gid);

    RETURN (unames);

    END;

    #测试调用,业务中简单需求没必要这么封装。

    SELECT getName(id) FROM userinfo;

    展开全文
  • 这是Oracle数据库中的UPDATE存储过程示例。 1.表SQL脚本 DBUSER表创建脚本。 CREATE TABLE DBUSER ( USER_ID NUMBER (5) NOT NULL, USERNAME VARCHAR2 (20) NOT NULL, CREATED_BY VARCHAR2 (20) NOT NUL...

    这是Oracle数据库中的UPDATE存储过程示例。

    1.表SQL脚本

    DBUSER表创建脚本。

    CREATE TABLE DBUSER ( 
      USER_ID       NUMBER (5)    NOT NULL, 
      USERNAME      VARCHAR2 (20)  NOT NULL, 
      CREATED_BY    VARCHAR2 (20)  NOT NULL, 
      CREATED_DATE  DATE          NOT NULL, 
      PRIMARY KEY ( USER_ID ) 
     )

    2.存储过程

    一个存储过程,接受2个IN参数,并根据提供的userId更新用户名字段。

    CREATE OR REPLACE PROCEDURE updateDBUSER(
    	   p_userid IN DBUSER.USER_ID%TYPE,
    	   p_username IN DBUSER.USERNAME%TYPE)
    IS
    BEGIN
    
      UPDATE DBUSER SET USERNAME = p_username where USER_ID = p_userid;
      
      COMMIT;
    
    END;
    /

    3.从PL / SQL调用

    从PL / SQL调用如下:

    BEGIN
       updateDBUSER(1001,'new_mkyong');
    END;

    结果
    通过updateDBUSER存储过程更新用户名为1001的用户名。

    翻译自: https://mkyong.com/oracle/oracle-stored-procedure-update-example/

    展开全文
  • [code="...ALTER PROCEDURE [dbo].[sp_DJAreas_update] @Id varchar(50), @Name varchar(255), @AreaType int, @PQType int, @Summary varchar(500), @LastUserId varchar(32), @Status...
  • 存储过程如下,出不来计算数据,查了一下发下Update操作没有更新,也不报错,有点急 ``` PROCEDURE update_marketing_moneys AS --根据佣金表里获取当月数据 CURSOR p_fycDetail_list IS select sum(y.FYC_...
  •  SET @sqlstring='UPDATE tbl_product_store SET  '+@pingjie+' where product_No='+@productNo+' and product_size='+@size+' and color='+@color+'' 转载于:...
  • 看了这篇文章:oracle存储过程update不成功的一个原因 尝试着改变了变量名字,却不起作用,最后发现是传入参数的类型问题:   有一个参数是这样的类型:account varchar2   而update语句中直接使...
  • 今天做邮件群发系统开发,遇到这样一个问题:更改数据库一条记录并返回它的id.  下面记录我的思维过程: 方法一:  1.先select ...for update的方式... 这种方法的存储过程如下: CREATE OR REPLACE PROCEDURE b...
  • 1.问题背景 尽管在数据库操作中我们并不提倡改动主键,可是确实在实际生活中...可是DBMS在运行了第一条update后检查完整性会发现冲突:B中条目的外键不存在。 注:我在Oracle database环境下遇到这个问题的。O...
  • PROCEDURE update_new(param in varchar2) IS CURSOR cur1 IS SELECT l.id from leaguer l where l.imei =param order by l.id desc; curid number :=0; idx number := 1; maxId number...
  • 背景:虽然在数据库操作中我们并不提倡修改主键,但是确实在实际生活中有这样的业务需求:表A有主键KA,表B中声明了一个references A(KA)...但是DBMS在执行了第一条update后检查完整性会发现冲突:B中条目的外键不存在。
  • --更新用户状态PROCEDURE P_UPDATE_USER_STATUS(v_SrcID IN NUMERIC,v_DstID IN NUMERIC,v_DstType IN NUMERIC,v_Offline IN NUMERIC)ISBEGINIF v_DstType=1 THEN --群组BEGIN--获取群组用户I...
  • UPDATE存储过程

    2016-06-13 10:58:37
    我想写一个UPDATE存储过程,但是更新多少条字段是变化的, 比如下面这样的SQL语句 UPDATE CDJC_CRM.dbo.JC_Contract SET Cus_Address=A.address, Cus_Name=A.basename,Con_Code=A.hetongbh,Con_State=A....
  • --更新用户状态 PROCEDURE P_UPDATE_USER_STATUS ( v_SrcID IN NUMERIC, v_DstID IN NUMERIC, v_DstType IN NUMERIC, v_Offline IN NUMERIC ) IS BEGIN IF v_DstTyp...
  • 从而减少一次查询数据库的过程存储过程设计如下:CREATE PROCEDURE `pro_SaveData`(IN `sinst` varchar(500),IN `supdt` varchar(500))BEGIN#直接更新记录set @v_updsql=supdt;prepare stmt fr...
  • 如下存储过程写法对吗?执行成功,没有报错,但是实际查询数据时发现数据并没有被更新,求解答,问题出在哪里呢? create or replace procedure emp_role_disable Is Begin Update c_userxrole Set expiration_...
  • mysql update存储过程

    千次阅读 2016-12-02 14:20:56
    其实存储过程和函数真的很像,我感觉调试没有函数好,最近写了个简单的存储过程,是为了简单的对不同范围的值进行update的操作, CREATE PROCEDURE set_class(in ww int,in mix_value int,in max_value INT) BEGIN...
  • oracle 存储过程循环执行update语句

    千次阅读 2016-05-10 18:26:24
    select column1 from table1 ;...请问在存储过程里如何实现? 请写一个较为完成的存储过程。我会适当再加分的。谢谢! 2012-06-28 13:43 提问者采纳其实二楼写的最简单,但对于新手,最好别那么
  • MYSQL数据库从4.1就开始支持事务功能,据说5.0将引入存储过程^_^ 先简单介绍一下事务吧!事务是DBMS得执行单位。它由有限得数据库操作序列组成得。但不是任意得数据库操作序列都能成为事务。一般来说,事务是必须...
  • 找了半天的资料,原来Postgresql的存储过程是用function,而不是procedure!!!!!! CREATE OR REPLACE FUNCTION "public"."test_fun"("sqlwhere" text) RETURNS "pg_catalog"."int4" AS $BODY$ declare ...
  • oracle存储过程 关于update的动态SQL-工作心得 本随笔文章,由个人博客(鸟不拉屎)转移至博客园 发布时间: 2018 年 12 月 20 日 原地址:...
  • 存储过程中经过加工对表执行update语句,但表的数据太大了,2百多万数据的表我就要执行1个多小时,,,8千多万数据的表要怎么办啊?
  • 今天一个同事写oracle 的存储过程遇到了一个问题, 他在里面update 操作不能完成更新的操作, 但是又不会报错. 如一个表 A(id,code, name, type) 在存储过程中的更新操作的语句: update A x...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 5,230
精华内容 2,092
关键字:

存储过程update