1

我是 SQR 的新手。我需要帮助来编写一个变量并将其用于条件语句。我的伪代码去了

declare $head_print

let $head_print = (select * from PS_DTR_RPT_ACCT
where RPT_TREE_NODE = 'REAL_ESTATE_EXP' 
or TREE_NODE_NUM between 4600000 and 4699999)

if(head_print contain REAL_ESTATE_EXP or Account between 46000000 and 4699999)
then head_print = "REAL ESTATE";
else head_print = "Capital ESTATE";
4

1 回答 1

1

目前还不太清楚你想要什么,所以我在做一个假设。似乎如果某个值在表 PS_DTR_RPT_ACCT 中,那么您希望它说“REAL ESTATE”,否则说“CAPITAL ESTATE”

现在使用 SQR,您必须将您的 SQL 放在一个开始选择块中 - 规则非常严格 - 字段名称必须在第 1 列中 - 在第 1 列下面的代码。在下面的例程中,我尝试编写您的伪代码实际 SQR 中的代码,但是,我无法对其进行测试,因此您可能会遇到错误 - 另外我不知道您的字段名称,因为它只是说“选择 *”。

Begin-Report

   do GetData

End-Report

Begin-Procedure GetData

! Initialize value - if no data found, query this later and set it to the "ELSE"
Let $Head_print = ''

Begin-Select

Head_Print
   ! Override the value from the table but only if you need to
   Let $Head_Print = 'REAL ESTATE'

from PS_DTR_RPT_ACCT
Where RPT_TREE_NODE = 'REAL_ESTATE_EXP' 
or TREE_NODE_NUM between 4600000 and 4699999)

End-Select 

! If $Head_print is blank, then no value was found with the sql - do the ELSE part
If $Head_Print = ''
   Let $Head_Print = 'Capital Estate'
End-If

End-Procedure

SQR 是一种非常好的学习有限语言 - 语法有些严格,但就像带有 SQL 的 Basic 一样简单。我建议您阅读参考手册——它可以从 Oracle 下载。

随意询问有关 SQR 的任何其他问题-如果您这样做,我会收到警报-抱歉花了这么长时间才回答

于 2014-03-19T17:43:49.520 回答