酷代码 AI
菜单
全部AI  /  热门  /  AI写代码神器
服务商

CREATE PROCEDURE `getOrgParentMsg`( IN `@orgCode` VARCHAR ( 100 ), IN `@orgType` VARCHAR ( 100 ), OUT `@rtnOrgCode` VARCHAR ( 100 ), OUT `@rtnOrgName` VARCHAR ( 100 )) BEGIN DECLARE `@parentTemp` VARCHAR ( 100 ); DECLARE `@orgTypeTemp` VARCHAR ( 100 ); DECLARE `@orgCodeTemp` VARCHAR ( 100 ); DECLARE `@orgNameTemp` VARCHAR ( 100 );

# 达梦数据库存储过程修改 ```sql CREATE OR REPLACE PROCEDURE getOrgParentMsg( p_orgCode IN VARCHAR(100), p_orgType IN VARCHAR(100), p_rtnOrgCode OUT VARCHAR(100), p_rtnOrgName OUT VARCHAR(100)) AS v_parentTemp VARCHAR(100); v_orgTypeTemp VARCHAR(100); v_orgCodeTemp VARCHAR(100); v_orgNameTemp VARCHAR(100); BEGIN BEGIN SELECT parent_code, org_type, org_code, org_name INTO v_parentTemp, v_orgTypeTemp, v_orgCodeTemp, v_orgNameTemp FROM org_info WHERE org_code = p_orgCode; IF v_orgTypeTemp = p_orgType THEN p_rtnOrgCode := v_orgCodeTemp; p_rtnOrgName := v_orgNameTemp; RETURN; END IF; WHILE v_parentTemp IS NOT NULL LOOP SELECT parent_code, org_type, org_code, org_name INTO v_parentTemp, v_orgTypeTemp, v_orgCodeTemp, v_orgNameTemp FROM org_info WHERE org_code = v_parentTemp; IF v_orgTypeTemp = p_orgType THEN p_rtnOrgCode := v_orgCodeTemp; p_rtnOrgName := v_orgNameTemp; RETURN; END IF; END LOOP; END; p_rtnOrgCode := v_orgCodeTemp; p_rtnOrgName := v_orgNameTemp; IF v_orgTypeTemp != p_orgType THEN p_rtnOrgCode := NULL; p_rtnOrgName := NULL; END IF; END; / ``` ## 主要修改点 1. 参数命名方式改为使用前缀区分(p_表示参数,v_表示变量) 2. 达梦使用`:=`进行赋值,而不是`=` 3. 移除了MySQL的标签语法,改用简单的BEGIN/END块 4. WHILE循环语法改为`WHILE...LOOP...END LOOP` 5. 使用`RETURN`替代`LEAVE`退出块 6. 存储过程定义语法改为`CREATE OR REPLACE PROCEDURE...AS...BEGIN...END` 7. 移除了变量声明中的反引号 ## 注意事项 1. 达梦数据库对变量名大小写不敏感,建议统一使用大写或小写 2. 确保org_info表中的org_code字段有索引以提高查询性能 3. 考虑添加异常处理块捕获可能的SQL错误 [2025-03-25 10:26:15 | AI写代码神器 | 621点数解答]

相关提问