达梦数据库使用汇总

121 阅读1分钟

#1 安装的时候请务必取消大小写敏感

--## 查询兼容模式 默认是0,如果要设置兼容MySQL,要设置为4 
SELECT para_name, para_value FROM v$dm_ini WHERE para_name = 'COMPATIBLE_MODE';

--## 查询是否大小写敏感 0表示否,安装的时候取消大小写敏感
select case_sensitive();

#2 MySQL迁移到达梦注意事项

  1. default null去除,默认就是null
  2. default CURRENT_TIMESTAMP() 改为 default SYSDATE
  3. group_concat函数在神通达梦数据库中的相同效果函数
select group_concat(c.name) from...//mysql数据库中有该函数
select wm_concat(c.name) from...//神通、达梦数据库中的相同效果函数

#3 手写的sql语句中,字段不能用 `

下面是错误的

$sql = "select `name`, title, id from test_table";
DB::select($sql)

下面是正确的

$sql = "select name, title, id from test_table";
DB::select($sql)

#4 求父子表集合

注意:PRIOR 用法,放在子id前查找数据为已该子id下的所有子集; 放在父id前查找数据为该父id上的所有父级

  • 求给定节点的所有子集
CREATE OR REPLACE FUNCTION "SYSADMIN"."getChildList"("s_org_id" IN VARCHAR(20),"i_self" IN VARCHAR(1))
RETURN CLOB
AUTHID DEFINER
 AS 
DECLARE
    result_list CLOB;
BEGIN
	IF i_self = 1 THEN
		select WM_CONCAT("org_id") INTO result_list from "orgs" start with "org_id" = s_org_id CONNECT BY PRIOR "org_id" =  "org_pid";
	ELSE
		select WM_CONCAT(o."org_id") INTO result_list FROM (select * from "orgs"
		start with "org_id" = s_org_id CONNECT BY PRIOR "org_id" =  "org_pid") o where o."org_id"<>s_org_id;
	END IF;
    RETURN NVL(result_list, '');  -- 处理空结果
END;
  • 求给定节点的所有父级
CREATE OR REPLACE FUNCTION "SYSADMIN"."getParentList"
(
    s_org_id   VARCHAR(20),  -- 输入组织ID
    i_self     VARCHAR(1)    -- 是否包含自身:'1'包含,'0'不包含
)
RETURN CLOB AS 
DECLARE
    result_list CLOB;
BEGIN
	IF i_self = 1 THEN
		select WM_CONCAT("org_id") INTO result_list from "orgs" start with "org_id" = s_org_id CONNECT BY "org_id" =  PRIOR "org_pid";
	ELSE
		select WM_CONCAT(o."org_id") INTO result_list FROM (select * from "orgs"
		start with "org_id" = s_org_id CONNECT BY "org_id" =  PRIOR "org_pid") o where o."org_id"<>s_org_id;
	END IF;
    RETURN NVL(result_list, '');  -- 处理空结果
END;
/