首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >有没有人可以在netezza中指导从select语句进行循环

有没有人可以在netezza中指导从select语句进行循环
EN

Stack Overflow用户
提问于 2014-12-22 17:16:40
回答 1查看 4.1K关注 0票数 0
代码语言:javascript
复制
Create or replace procedure total_test_inside()
RETURNS REFTABLE(testtabl)
LANGUAGE NZPLSQL
AS
BEGIN_PROC
DECLARE
prod_id integer;
lkp_weighted_prc numeric(20,3);
rec record;
BEGIN
FOR rec IN select prod_id from weight
LOOP
select weightprice into lkp_weighted_prc from weight;
call total_amort_test(lkp_weighted_prc);
execute immediate 'insert into ' ||REFTABLENAME || ' values(' || lkp_weighted_prc || ')';
END loop;
return REFTABLE;
END;
END_PROC;

call total_test_inside();

谁能指导我为什么我不能循环,这是从netezza的权重表的最后一个prod_id。提前感谢

EN

回答 1

Stack Overflow用户

发布于 2014-12-23 03:59:24

我要冒险一试,我认为你在这里想要完成的事情。

因为您已经在这里执行了FOR循环,所以不需要再执行一次select来获取weightprice,事实上,这可能只会一次又一次地给出相同的第一个值。

代码语言:javascript
复制
FOR rec IN select prod_id from weight
LOOP
select weightprice into lkp_weighted_prc from weight;
call total_amort_test(lkp_weighted_prc);
execute immediate 'insert into ' ||REFTABLENAME || ' values(' || lkp_weighted_prc || ')';
END loop;

我想你想要的是这个。在这里,我向FOR定义中的SELECT语句添加了select价格,并删除了看似多余的SELECT。然后我用“rec”限定符引用在FOR循环中跳过的单个记录。

代码语言:javascript
复制
BEGIN
FOR rec IN select prod_id, weightprice lkp_weighted_prc  from weight
LOOP
call total_amort_test(rec.lkp_weighted_prc);
execute immediate 'insert into ' ||REFTABLENAME || ' values(' || rec.lkp_weighted_prc || ')';
END loop;
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/27599683

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档