Netezza过程跳过循环中的空变量

时间:2019-08-30 18:30:55

标签: netezza

我们有一个SP,它生成要迁移的表的列表。在处理表列表期间,有时会删除列表中原来的表。 SP遇到一个“找不到表”条件时会引发异常并退出。

代码如下:

import rdflib as _rdf
import sqlalchemy as _sqla
db_str = 'postgresql://testuser:testpasswd@localhost/testdb'
db = _sqla.create_engine(db_str)
graph = _rdf.Graph()
graph.open(db)
print(graph.serialize(format='nt'))

我正在寻找在SQL_STATEMENT2中验证REC1的方法,以验证它不是null还是空字符串。如果是这样,我想跳过该REC1实例并移至下一个实例。以下似乎不是答案:

SQL_STATEMENT1 := 'SELECT * FROM ...';

FOR REC1 IN EXECUTE SQL_STATEMENT1
LOOP
   SQL_STATEMENT2 := 'SELECT * FROM ...';

   FOR REC2 IN EXECUTE SQL_STATEMENT2
   LOOP
   ...

IF SQL_STATEMENT2 IS NULL THEN                                          
CONTINUE                                                                
END IF;

1 个答案:

答案 0 :(得分:0)

由于在生成外部列表的时间与执行内部语句的时间之间,原始列表中的表之一被删除的可能性很小,因此,我认为没有立即的方法可以防止其失败。即使外面的“列表”上只有一张桌子...

您需要以良性方式处理SP中的特定错误。