表变量。 declare table @t_var

本文介绍了如何在SQL中声明表变量并插入查询结果。通过示例展示了声明表变量的方法及如何将特定表的ID字段数据插入到表变量中。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

1. 声明表变量:declare table @tablename(columnname type), 如: declare table @t(id int);

2. 把查询 结果插入表变量中: insert into @t.columnname select id from table1, 把table1的id 插入@t中

 

转载于:https://www.cnblogs.com/hellomandy/p/8068184.html

CREATE DEFINER=`zd_shiwenchao`@`10.212.1.15` PROCEDURE `JGJS_RADS_EAST_CHECK`() BEGIN -- 1、声明变量 DECLARE DONE INT DEFAULT FALSE; DECLARE V_SERIAL VARCHAR(50); -- 标记游标循环是否完成 DECLARE V_TABLE VARCHAR(255); -- 存储从CHECKRULES中获取的DECLARE V_SQL TEXT; -- 存储从CHECKRULES中获取的SQL语句 DECLARE V_DATAITEMNAME VARCHAR(255); -- 存储列名(COLUMNNAME) DECLARE V_COMMIT INT DEFAULT 1; -- 定义事务用,1为正常,-10为失败 DECLARE V_MSG TEXT; -- 记录错误信息 DECLARE V_CNT INT; -- 用于记录成功时的数据量 DECLARE V_ENDDATE DATETIME DEFAULT NOW(); -- 记录当前时间 DECLARE CUR CURSOR FOR SELECT SERIALNUMBER, TABLENAME, DATAITEMNAME, SQLSTATEMENT FROM JGJS_RADS_CHECKSQL WHERE ISACTIVE = 1; -- 2、异常处理 DECLARE CONTINUE HANDLER FOR NOT FOUND SET DONE = TRUE; DECLARE CONTINUE HANDLER FOR SQLEXCEPTION BEGIN GET DIAGNOSTICS CONDITION 1 V_MSG = MESSAGE_TEXT; SET V_COMMIT = -10; ROLLBACK; -- 发生异常时回滚事务 END; -- 3、开始事务 START TRANSACTION; -- 4、打开游标 OPEN CUR; READ_LOOP: LOOP FETCH CUR INTO V_SERIAL, V_TABLE, V_DATAITEMNAME, V_SQL; IF DONE THEN LEAVE READ_LOOP; END IF; -- 5、动态执行SQL并统计错误数 SET @DYNAMIC_SQL = CONCAT( 'INSERT INTO JGJS_RADS_CHECKRESULT (SERIALNUMBER, TABLENAME, COLUMNNAME, ERROR_COUNT) ', 'SELECT ''', V_SERIAL, ''', ''', V_TABLE, ''', ''', V_DATAITEMNAME, ''', COUNT(*) ', 'FROM (', V_SQL, ') AS VALIDATION_RESULTS' ); PREPARE STMT FROM @DYNAMIC_SQL; EXECUTE STMT; DEALLOCATE PREPARE STMT; END LOOP; CLOSE CUR; -- 6、根据事务状态提交或回滚 IF V_COMMIT = -10 THEN ROLLBACK; -- 事务异常回滚 -- 7、记录报错信息到日志 INSERT INTO JGJS_RADS_CHECKRESULT (SERIALNUMBER, TABLENAME, COLUMNNAME, ERROR_COUNT, DEALSTATUS, REMARK, CHECKTIME) VALUES ('SYSTEM', 'SYSTEM', 'SYSTEM', 0, 'ERROR', V_MSG, NOW()); ELSE -- 事务正
03-11
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值