我正在创建10g的表格
我将主表存储在数据库中,并创建了另一个表以仅存储3个主表中的主键值。我想从主表中搜索数据
在搜索按钮代码中:
SET_BLOCK_PROPERTY('BLOCK_NAME',
default_where,
'COLUMN_NAME=' ||''''|| NVL(:BLOCK_NAME.FIELD_NAME, 0) ||''''
);
EXECUTE_QUERY;
按下按钮时显示错误无效数字,因为我创建的另一个表存储了我要从主表中搜索数据的主键值
请帮助
答案 0 :(得分:0)
我不确定我是否理解您的描述。那张“另一张桌子”是用来做什么的?好的,您存储3个“主”表中的主键,但是-为什么?
无论如何:如果FIELD_NAME
是数字,那么将NVL
应用于它并将NULL
转换为0
(零)是有意义的,但是-如果它是不是,那可能是个问题(*)。
这就是您使用的所有单引号所建议的-FIELD_NAME
是一个字符字段,因此您将其值括在单引号中。很难引用这么多引号,所以-为什么不切换到更简单的名称,例如
'column_name=' || chr(39) || :block_name.field_name || chr(39)
其中chr(39)
表示单引号。
要继续使用NVL
可能出现的问题(*):如果是这种情况,请考虑使用其他语法,并避免使用NVL
:
'column_name=' || chr(39) || :block_name.field_name || chr(39) ||
' or ' || :block_name.field_name || ' is null'