首页 > 数据库 >达梦数据库迁移常见语法问题

达梦数据库迁移常见语法问题

时间:2024-07-02 09:02:46浏览次数:19  
标签:CURSOR -- 数据库 语法 rg param1 TABLE rm 达梦

数据库迁移常见语法问题

DM数据库常见语法差异

一.Sql文语法

1.杀进程语法
select * from v$lock;
select * from sysobjects;--(查询对象信息)
select * from v$sessions;--(查询会话信息)
--上述3条语句组合一下就能查出哪张表上的某种锁是由哪个会话里的操作加上的
--查哪张表上的某种锁是由哪个会话里的操作加上的
select a.*,b.NAME,c.SESS_ID from v$lock a
left join sysobjects b on b.ID=a.TABLE_ID
left join v$sessions c on a.TRX_ID=c.TRX_ID;
--找到表名对应的SESS_ID,使用系统函数   blocked=1表示锁了
sp_close_session(sess_id);
--干掉对应的会话
2.删除失败显示进程占用
--删除的过程中查询
--查找wait_for_id
select * from v$trxwait ;

--2084552 根据wait_for_id找到sess_id
SELECT sess_id, sql_text, state, trx_id   
FROM v$sessions   
WHERE trx_id =2084552;

--173471336 杀掉sess_id
sp_close_session(173471336);
3.RECURSIVE递归查询关键字

在达梦中递归查询会报错,需要指明CTE列名称

--会报错
WITH  RECURSIVE cte AS (  
    -- 基础情况:选择顶级商品(没有父代码的商品)  
    SELECT rg.*
    FROM rm_goods rg  
    LEFT JOIN rm_goods c ON rg.parentcode_ = c.code_  
    UNION ALL  
    -- 递归部分:选择每个商品的直接子商品  
    SELECT rg.*
    FROM rm_goods rg  
    INNER JOIN cte e1 ON rg.parentcode_ = e1.code_ -- 关联到父商品  
)  
SELECT * FROM cte ;

--正确书写方法
WITH  RECURSIVE cte(code_,name_,parentcode_,memo_,isroot_,rootcode_) AS (  
    -- 基础情况:选择顶级商品(没有父代码的商品)  
    SELECT rg.*
    FROM rm_goods rg  
    LEFT JOIN rm_goods c ON rg.parentcode_ = c.code_  
    UNION ALL  
    -- 递归部分:选择每个商品的直接子商品  
    SELECT rg.*
    FROM rm_goods rg  
    INNER JOIN cte e1 ON rg.parentcode_ = e1.code_ -- 关联到父商品  
)  
SELECT * FROM cte ;

二.存储过程

1.创建存储过程参数不要指定具体长度
--报错写法
CREATE or replace PROCEDURE pr_test(
  i_param1  in int(10),
  i_param1 in varchar(10),
  i_param1 in varchar(10),
  O_RETURN_CURSOR out CURSOR
) as
begin 
open O_RETURN_CURSOR  for
select 1 from dual;
end

--正确写法
CREATE or replace PROCEDURE pr_test(
  i_param1  in int,
  i_param1 in varchar,
  i_param1 in varchar,
  O_RETURN_CURSOR out CURSOR
) as
begin 
open O_RETURN_CURSOR  for
select 1 from dual;
end
2.达梦存储过程调用时无法直接显示返回游标
CREATE TABLE "RM"."rm_test"
(
"code_" VARCHAR2(10),
"name_" VARCHAR2(10)
);

CREATE or replace PROCEDURE pr_test(
  i_param1  in int(10),
  i_param1 in varchar(10),
  i_param1 in varchar(10),
  O_RETURN_CURSOR out CURSOR
) as
begin 
--结果无法直接显示
open O_RETURN_CURSOR  for
select * from rm_test;
end

正确做法创建表
create table rm_test01 as select * from rm_test;

CREATE or replace PROCEDURE pr_test(
  i_param1  in int(10),
  i_param1 in varchar(10),
  i_param1 in varchar(10),
  O_RETURN_CURSOR out CURSOR
) as
begin 

insert into rm_test01 as select * from rm_test;
open O_RETURN_CURSOR  for
select * from rm_test;
end

存储过程调用结束后查询rm_test01;

数据库迁移常见校验语句

1.查询mysql表名及数据行数

SELECT  
    TABLE_NAME AS tablename,   
    TABLE_ROWS AS tablerows   
FROM   
    INFORMATION_SCHEMA.TABLES   
WHERE   
    TABLE_SCHEMA = 'rm' AND   
    TABLE_TYPE = 'BASE TABLE'; 

2.查询达梦表名及数据行数

SELECT TABLE_NAME, NUM_ROWS   
FROM DBA_TAB_STATISTICS  t
WHERE t.TABLE_OWNER = 'rm';

3.清除表数据(迁移用)

DECLARE  
  v_table_name VARCHAR2(50);  
BEGIN  
  FOR t IN (SELECT TABLE_NAME FROM DBA_TABLES WHERE OWNER = 'rm') LOOP  
    EXECUTE IMMEDIATE 'TRUNCATE TABLE ' || t.TABLE_NAME;  
  END LOOP;  
  COMMIT;  
END;  

标签:CURSOR,--,数据库,语法,rg,param1,TABLE,rm,达梦
From: https://blog.csdn.net/yannsann/article/details/140108669

相关文章

  • camunda数据库表结构详细说明
    本文基于Camunda7.19.0版本,介绍Camunda开源工作流引擎的数据库架构和ER模型,Camunda7.19.0共49张表,包括了BPMN流程引擎、DMN规则引擎、CMMN引擎、历史数据、用户身份等方面的表结构定义,以及表与表之间的关联关系。1、camunda数据库结构综述Camunda流程引擎的数据库架构由多个表组......
  • [AIGC] 常用的OLAP数据库:为数据分析提供强大的支持
    导语:在大数据时代,数据分析成为了企业决策的重要依据。为了高效地处理和分析海量的数据,OLAP数据库应运而生。本文将介绍几种常用的OLAP数据库,为数据分析提供强大的支持。一、SnowflakeSnowflake是一种云原生的OLAP数据库,以其强大的数据处理能力和灵活的架构而闻名。它具有......
  • Python毕业设计-基于Python实现的深圳链家租房可视化系统源码+文档说明+条形图+数据库
    文章目录源码下载地址项目介绍项目功能界面预览项目备注源码下载地址源码下载地址点击这里下载代码项目介绍项目历经数据采集->数据展示->数据分析->数据预测lianjia_1:scrapy爬虫项目lianjia_show:flask对采集的数据进行展示链家房价预测:采集的数据进行分析......
  • 金仓数据库
    文章目录开启列名大写开启列名大写在jdbc连接中指定的连接参数,开启列名大写jdbc:kingbase8://[ip]:[port]/[database]?initParams=enable_upper_colname=oninitParams参数说明:指定用来初始化数据库连接的session级参数,可指定多个,各个参数之间用分号进行分隔,如in......
  • mysql数据库基本语句
    –查看所有数据库。showdatabases;–切换到指定数据库。usemysql;-查看数据库下所有表showtables;–其常用他命令。查看当前用户:selectuser();当前日期时间selectnow();查看数据库状态:\s;退出数据库:\q;基本操作:创建库、创建表、删除库、删除表、修改库、修改表......
  • 基于springboot的环保网站管理系统,环保管理系统,附源码+数据库+论文,包远程安装调试
    1、项目介绍现代经济快节奏发展以及不断完善升级的信息化技术,让传统数据信息的管理升级为软件存储,归纳,集中处理数据信息的管理方式。本环保网站就是在这样的大环境下诞生,其可以帮助管理者在短时间内处理完毕庞大的数据信息,使用这种软件工具可以帮助管理人员提高事务处理效率,达......
  • 数据库系列-mysql-sql执行示例
    数据库定义语言--数据库查询语句模板--!数据库创建--创建数据库test,如果存在则不创建,默认字符集为utf8,不区分大小写,cs为大小写敏感,也可以使用utf8_bin,字符采用二进制存储CREATEDATABASEIFNOTEXISTS`test`DEFAULTCHARACTERSETutf8COLLATEutf8_general_ci;......
  • WEB01MySQL安装和数据库
    第一天、WEB课程web课程主要讲三部分内容数据库数据库介绍什么是数据库数据存储的仓库,其本质也是一个文件系统数据库会按照特定的格式对数据进行存储,用户可以对数据库中的数据进行增加,修改,删除及查询操作。数据库管理系统层次数据库管理系统(DataBaseManage......
  • 电脑配件管理系统(数据库课设)
     1.课设要求描述 ●实现电脑配件的增删查改功能管理●实现管理员和用户的不同登录身份管理●实现管理员登录之后对电脑配件的管理●实现用户登录后进行查询和领用配件的功能2.制作思路及基础讲解此项目主要是用于完成大二下半学期的数据库课设,随手记录。技术面大二下之......
  • 数据库使用规范
    一、数据库规范1.无特殊情况,必须使用InnoDB存储引擎。理由:功能上,支持事务、行级锁;性能上,并发性能更好、CPU及内存缓存页优化使得资源利用率更高。2.库表命名以模块前两级名称开头(多个模块共享一个库的可以独立命名前缀),以环境简称结尾(正式环境可以省略),单词之间用短横线分割。环境......