我有一个名为c_kilometers的变量。我有一个光标可以抓取一堆具有那些公里数的记录。我需要在游标中运行两个单独的SELECT语句,它们根据游标中的值从一个表中获取一公里,然后运行另一个SELECT在另一个表上执行相同的操作。
SELECT t.kilometers INTO c_kilometers
FROM table_name WHERE WHERE l.code = cursor_t.code_att
SELECT g.kilometers INTO c_kilometers
FROM table_name WHERE l.code = cursor_t.code_aff
我的问题是我可以将c_kilometers一起添加而不创建临时变量来保留值吗?我有一段时间没有使用PL / SQL,我不记得必须这样做,所以这更像是一个学习问题。
答案 0 :(得分:6)
如果您的查询始终只返回一行,则可以执行以下任一操作:
/* Variant 1 */
SELECT t.kilometers + g.kilometers
INTO c_kilometers
FROM table_name t, table_name2 g
WHERE etc1
AND etc2
/* Variant 2 */
SELECT t.kilometers
INTO c_kilometers
FROM table_name
WHERE etc;
SELECT c_kilometers + g.kilometers
INTO c_kilometers
FROM table_name2
WHERE etc;
如果他们与您发布的表格相同,您可以使用:
SELECT COALESCE(SUM(kilometers), 0)
INTO c_kilometers
FROM table_name
WHERE l.code IN (cursor_t.code_aff, cursor_t.code_att)
将table_name
放入生成游标的SELECT
查询中似乎更有效。
如果您发布此查询,我可能会帮助您做到这一点。
答案 1 :(得分:1)
像这样加入SELECT:
SELECT a.kilometers + b.kilometers
FROM (SELECT code, kilometers FROM table_name WHERE ...) a JOIN
(SELECT code, kilometers FROM table_name WHERE ...) b ON a.code = b.code