Teradata存储过程无法运行求助:如何将表count(*)存入变量
解决Teradata存储过程动态查询count(*)赋值变量的错误
你的存储过程报错是因为动态SQL字符串里错误地包含了into关键字,同时EXECUTE immediate的语法使用有误。正确的做法是将into子句放在EXECUTE immediate后面,而非动态SQL语句内部。
修正后的存储过程代码
REPLACE PROCEDURE Dynamic_Select() BEGIN DECLARE stmt VARCHAR(500); -- count(*)是数值类型,建议用INT/BIGINT替代VARCHAR(50) DECLARE result1 INT; -- 动态SQL仅保留查询语句,不包含into SET stmt = 'SELECT count(*) FROM table_name'; -- 通过EXECUTE immediate的into子句将结果存入变量 EXECUTE IMMEDIATE stmt INTO result1; END;
关键修改点
- 移除动态SQL字符串中的
into:动态SQL只需要定义要执行的查询语句,变量赋值由EXECUTE immediate的into子句完成。 - 调整变量类型:
count(*)返回数值,用INT或BIGINT类型比VARCHAR(50)更合理,避免不必要的类型转换。 - 确保
EXECUTE immediate语法正确:格式为EXECUTE IMMEDIATE <动态SQL变量> INTO <接收结果的变量>。
内容的提问来源于stack exchange,提问作者Harshal Unhale
相关产品推荐
相关产品推荐

