达梦变量赋值

1、直接赋值

sql 复制代码
DECLARE
	--定义变量
	id int;
	
	--定义变量,并赋初始值
	name varchar(20) = 'initValue';
BEGIN
	--直接赋值,方式1
	set id = 1;
	
	--直接赋值,方式2
	name := 'currentValue';
	
	select id as 编号, name 名称;
end;

2、查询赋值

sql 复制代码
DECLARE
	--定义变量
	userid varchar(20);
	
	--定义变量,并赋初始值
	username varchar(20) = 'initValue';
BEGIN
	--查询赋值
	select emp_ID, emp_Name into userid, username from EMPLOYEE where EMP_ID = 'manager';
	
	select userid as 编号, username 名称;
end;

SELECT...INTO 语句要求查询只能返回一条记录,执行时可能会发生两种例外情况:

没有查询到满足条件的记录,系统返回预定义异常 NO_DATA_FOUND;

存在多行满足条件的记录,系统返回预定义异常 TOO_MANY_ROWS;

对于这样的异常必须做出相应处理,否则会影响 DMSQL 程序的正确执行。

处理 NO_DATA_FOUND

sql 复制代码
DECLARE
	--定义变量
	userid varchar(20);
	
	--定义变量,并赋初始值
	username varchar(20) = 'initValue';
BEGIN
	--查询赋值
	begin
		select emp_ID, emp_Name into userid, username from EMPLOYEE where EMP_ID = '';
	exception
		--对 NO_DATA_FOUND 异常必须做出相应处理,否则会影响 DMSQL 程序的正确执行。
 		when NO_DATA_FOUND then
 		begin
 			set userid = 'NO_DATA_FOUND';
 		end;
	end;
	
	select userid as 编号, username 名称;
end;

处理 TOO_MANY_ROWS

sql 复制代码
DECLARE
	--定义变量
	userid varchar(20);
	
	--定义变量,并赋初始值
	username varchar(20) = 'initValue';
BEGIN
	--查询赋值
	begin
		select emp_ID, emp_Name into userid, username from EMPLOYEE;
	exception
		--对 TOO_MANY_ROWS 异常必须做出相应处理,否则会影响 DMSQL 程序的正确执行。
		when TOO_MANY_ROWS then
		begin
			set userid = 'TOO_MANY_ROWS';
		end;
	end;
	
	select userid as 编号, username 名称;
end;
相关推荐
Decay__9 小时前
18_MySQL 智能巡检方案 —— 巡检项清单 / 一键巡检脚本 / 健康评分
运维·数据库·sql·mysql·架构
java_logo9 小时前
Docker 部署 Liquibase:轻松搭建数据库变更管理
数据库·docker·容器·数据库管理·liquibase·轩辕镜像·数据库变更
凤凰院凶涛QAQ10 小时前
《MySQL内核拆解:从SQL到InnoDB》(四) : 联合查询 & 视图
数据库·sql·mysql
码农小河6610 小时前
基于SSM+JSP的高校专业信息管理系统【附源码+数据库】
java·开发语言·数据库
张小姐的猫10 小时前
【MySQL】访问 & 数据流动原理
android·数据库·mysql·adb·1024程序员节
这个DBA有点耶14 小时前
信创场景下数据同步软件怎么选?对比开源CDC与原生闭环工具的结构性差异
数据库·mysql·架构
多客:duokelijie15 小时前
代练订单系统选型思路:跨品类游戏接入、订单分层管理、自动结算逻辑拆解!
数据库·mysql·微信小程序·前端框架·uni-app·php·持续部署
PingCAP15 小时前
平凯星辰上榜!2026 年胡润全球独角兽企业
数据库
PingCAP15 小时前
轨道交通 AFC 系统升级,平凯 Loop 把跨部门协同变成可追溯闭环
数据库