我把名字打长就会有人跟着念 2024-01-05 11:32 采纳率: 70%
浏览 3
已结题

问一下mysql支持甲骨文数据的存储过程语句吗?想用自己的电脑测试一下写的甲骨文数据库存储过程语句

问一下mysql支持甲骨文数据的存储过程语句吗?想用自己的电脑测试一下写的甲骨文数据库存储过程语句

就是想用mysql检测一下下面的shell脚本能不能正常运行,有没有人可以帮我看看我写的有没有问题?

#!/bin/bash
. /pmtech/.bash_profile
read -p "请输入数据库名称:" in_datebase
read -p "请输入单价临时表名称:" in_cbusithrcfg
read -p "请输入规则临时表名称:" in_crulecfg
read -p "请输入分次核发临时表名称:" in_cfccfg
read -p "请输入地市代码:" in_region_code
read -p "请输入时间(yyyymm):" in_date

$in_datebase<<!
 DECLARE
   vYm varchar2(100);
   vnYm varchar2(100);
   vLYm varchar2(100);
   vcbusithrcfg varchar2(100);
   vcrulecfg varchar2(100);
   vcfccfg varchar2(100);
   vRegion_code varchar2(100);
   vSql1      varchar2(4000);
   vSql2      varchar2(4000);
   vSql3      varchar2(4000);
   vNum       number(10);
   vNum2       number(10);
BEGIN
    vYm:='$in_date';
    vnYm:=vYm+1;
    vLYm:=vYm-1;
    vcbusithrcfg:='$in_cbusithrcfg';
    vcrulecfg:='$in_crulecfg';
    vcfccfg:='$in_cfccfg';
    vRegion_code:='$in_region_code';
-------临时单价表自己跟自己去重
    vSql1:='delete from '||vcbusithrcfg||' a where rowid<(
                select max(rowid) from '||vcbusithrcfg||' b
                    where a.region_code=b.region_code
                        and a.busi_code=b.busi_code)
            ';
    EXECUTE IMMEDIATE vSql1;
------跟下月单价表数据表去重
    vSql1:='delete from cbusithrcfg'||vnYm||' c
            where c.busi_code in (
                select a.busi_code
                    from cbusithrcfg'||vnYm||' a
                where a.busi_code in (
                    select b.busi_code
                        from '||vcbusithrcfg||' b
                        where a.region_code = b.region_code
                            and a.busi_code = b.busi_code
            )
                and a.region_code =''||vRegion_code||''
        )
            and c.region_code =''||vRegion_code||'' 
            ';
    EXECUTE IMMEDIATE vSql1;
-------跟当月数据表去重
    vSql1:='delete from cbusithrcfg'||vYm||' c
                where c.busi_code in (
                    select a.busi_code
                    from cbusithrcfg'||vYm||' a
                    where a.busi_code in (
                        select b.busi_code
                        from bonus.'||vcbusithrcfg||' b
                        where a.region_code = b.region_code
                        and a.busi_code = b.busi_code
                    )
                    and a.region_code =''||vRegion_code||''
                )
                and c.region_code =''||vRegion_code||''
                ';
    EXECUTE IMMEDIATE vSql1;
--跟没有月份的数据表去重
    vSql1:='delete from cbusithrcfg c
                where c.busi_code in (
                    select a.busi_code
                    from cbusithrcfg a
                    where a.busi_code in (
                        select b.busi_code
                        from bonus.'||vcbusithrcfg||' b
                        where a.region_code = b.region_code
                        and a.busi_code = b.busi_code
                    )
                    and a.region_code =''||vRegion_code||''
                )
                and c.region_code =''||vRegion_code||''
                ';
    EXECUTE IMMEDIATE vSql1;
-------------------------------------------------------------------------规则表去重
-----判断山个月的规则是否与当月的规则数量相等
    vSql2:='select count(*) from crulecfg'||vRegion_code|' where bill_ym=''||vYm||'' ';
    EXECUTE IMMEDIATE vSql2 into vNum;

    vSql2:='select count(*) from crulecfg'||vRegion_code|' where bill_ym=''||vLYm||'' ';
    EXECUTE IMMEDIATE vSql2 into vNum2;
    if [ vNum -eq 0 ];then
        vSql1:='insert into crulecfg'||vRegion_code||'
                    select ''||vYm||'',
                    FIR_CODE,
                    BUSI_CODE,
                    CASH_TYPE,
                    RATE,
                    MAX_FEE,
                    RULES
                    from crulecfg791
                    where bill_ym =''||vLYm||'' ';
    elif [ vNum -eq vNum2 ];then
        
--自己跟自己去重
    vSql1:='delete from bonus.'||vcrulecfg||' a where rowid<(
                select max(rowid) from bonus.'||vcrulecfg||' b
                where a.bill_ym=b.bill_ym
                and a.busi_code=b.busi_code)
                ';
    EXECUTE IMMEDIATE vSql1;
--临时规则表数据跟规则表12月791地市数据进行去重
     vSql1:='delete from crulecfg'||vRegion_code||' c
                where c.busi_code in (
                    select a.busi_code
                    from crulecfg'||vRegion_code||' a
                    where a.busi_code in (
                        select b.busi_code
                        from bonus.'||vcrulecfg||' b
                        where a.bill_ym = b.bill_ym
                        and a.busi_code = b.busi_code
                    )
                    and a.bill_ym =''||vRegion_code||''
                )
                and c.bill_ym =''||vRegion_code||''
                ';
    EXECUTE IMMEDIATE vSql1;
    else
        vSql1:='rollback';
        EXECUTE IMMEDIATE vSql1;
        echo "当月规则表数据数量与上月不相等"
        exit 1
    fi
----------------------------------------------------------------分次核发表去重
--自己跟自己去重
     vSql1:='delete from bonus.'||vcfccfg||' a where rowid<(
                select max(rowid) from bonus.'||vcfccfg||' b
                where a.region_code=b.region_code
                and a.busi_code=b.busi_code
                and a.bill_ym=b.bill_ym)
                ';
    EXECUTE IMMEDIATE vSql1;
--最后分次核发临时数据表跟cfccfg表进行去重
     vSql1:='delete from cfccfg c
                where c.busi_code in (
                    select a.busi_code
                    from cfccfg a
                    where a.busi_code in (
                        select b.busi_code
                        from bonus.'||vcfccfg||' b
                        where a.bill_ym = b.bill_ym
                        and a.busi_code = b.busi_code
                        and a.region_code = b.region_code
                    )
                    and a.bill_ym =''||vYm||''
                )
                and c.bill_ym =''||vYm||''
                and c.region_code =''||vRegion_code||''
            ';
    EXECUTE IMMEDIATE vSql1;
------------------------------------将处理好的临时单价数据表的数据插入到原单价表中
     vSql1:='insert all
             into cbusithrcfg'||vYm||' select * from bonus.'||vcbusithrcfg||'
             into cbusithrcfg'||vnYm||' select * from bonus.'||vcbusithrcfg||'
             into cbusithrcfg select * from bonus.'||vcbusithrcfg||'
             select count(*) from dual
             ';
    EXECUTE IMMEDIATE vSql1;
-----------------------------------将处理好的规则临时数据插入到原表中
     vSql1:='insert into bonus.crulecfg'||vRegion_code||' select * from bonus.'||vcrulecfg||' ';
    EXECUTE IMMEDIATE vSql1;
-----------------------------------将处理好的分次核发临时数据插入到原表中
     vSql1:='insert into bonus.cfccfg select * from bonus.'||vcfccfg||' ';
    EXECUTE IMMEDIATE vSql1;

    COMMIT;
END;
EXIT;
!
  • 写回答

1条回答 默认 最新

  • CSDN-Ada助手 CSDN-AI 官方账号 2024-01-05 14:24
    关注

    【以下回答由 GPT 生成】

    问题: MySQL是否支持甲骨文数据的存储过程语句?

    答案: MySQL不支持直接执行甲骨文数据的存储过程语句。MySQL使用的是SQL语言,而甲骨文数据库使用的是PL/SQL语言。虽然两者有相似之处,但也存在一些语法和特性的差异。因此,如果你想在MySQL中测试甲骨文数据库的存储过程语句,你需要进行适当的语法转换和修改。

    以下是一些可能的解决方案:

    1. 将甲骨文数据库的存储过程语句转换为MySQL支持的语法:
    2. 首先,你需要了解甲骨文数据库存储过程语句的语法和特性。
    3. 然后,根据MySQL的语法规则,将甲骨文数据库的存储过程语句进行适当的转换和修改。
    4. 注意,这可能需要一些繁琐的手动操作,并且有些功能可能无法直接转换。

    5. 使用第三方工具进行语法转换:

    6. 有些第三方工具可以帮助你将甲骨文数据库的存储过程语句转换为与MySQL兼容的语法。
    7. 你可以尝试搜索并使用这些工具,但请注意,由于甲骨文数据库和MySQL之间的差异,转换过程可能存在一些限制和不准确性。

    8. 重新编写存储过程:

    9. 如果你对甲骨文数据库的存储过程有深入了解,你可以尝试重新编写存储过程,使其符合MySQL的语法和特性。
    10. 这可能需要仔细研究甲骨文数据库的存储过程,并根据MySQL的要求进行适当地修改和重建。

    总结起来,MySQL不直接支持甲骨文数据库的存储过程语句,你需要进行语法转换或重写存储过程来在MySQL中进行测试。然而,由于甲骨文数据库和MySQL之间的差异,这可能是一个复杂和耗时的任务。最好是根据你的具体需求和限制来确定是否继续进行这项工作。如果你需要更详细的指导,我建议你查阅相关的文档和资料,或者咨询专业的数据库开发人员。



    【相关推荐】



    如果你已经解决了该问题, 非常希望你能够分享一下解决方案, 写成博客, 将相关链接放在评论区, 以帮助更多的人 ^-^
    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论

报告相同问题?

问题事件

  • 系统已结题 4月16日
  • 已采纳回答 4月8日
  • 创建了问题 1月5日

悬赏问题

  • ¥15 气象网格数据与卫星轨道数据如何匹配
  • ¥100 java ee ssm项目 悬赏,感兴趣直接联系我
  • ¥15 微软账户问题不小心注销了好像
  • ¥15 x264库中预测模式字IPM、运动向量差MVD、量化后的DCT系数的位置
  • ¥15 curl 命令调用正常,程序调用报 java.net.ConnectException: connection refused
  • ¥20 关于web前端如何播放二次加密m3u8视频的问题
  • ¥15 使用百度地图api 位置函数报错?
  • ¥15 metamask如何添加TRON自定义网络
  • ¥66 关于川崎机器人调速问题
  • ¥15 winFrom界面无法打开