在我的机构中,我们经常使用R来查询SQL数据库和返回数据框.

代码将如下所示:

df<-dbGetQuery(jdbcConnection, 
               "select * from companydatabase.specificview") 

问题是,有一种观点往往是空洞的.即存在,则在SQL Developer中有可见的列:

enter image description here

但通常它是空的,没有行.因此,如果我试图查询它,我会得到一个错误.

enter image description here

因此,在弄清楚如何在发生这种情况时防止R出错时,我有两种可能的方法:

  1. 使用trycatch()来处理错误并跳过它(这也是我要做的)

  2. 无论如何,请确保它始终至少返回一行.

我如何做到这一点(#2)?如何才能确保始终至少得到一个空行,并且SQL不会出错呢?

推荐答案

您可以更改视图并添加UNION ALL子句以添加虚拟行.这将确保您每次至少获得1行.

您的新视图将如下所示-

create or replace view specificview as
<<existing select clause>>
union all
select 'dummy' as key, null as col1, null as col2... from dual

Sql相关问答推荐

当有空单元格时,如何连接列

为表中每个缺少的引用创建新行

对任何(数组)使用LIKE?

基于多列比较连接两个表

如何查找所提供日期范围的所有季度开始日期和结束日期

如何实现同一列的递归计算?

如何根据行状态设置正确的标志

每个学校 Select N个最新的行,但跳过同一学生的重复行

从选定记录中提取摘要作为值的划分

错误:postgresql 中缺少表评级的 FROM 子句条目

如何 for each id创建长度等于id长度的不同日期序列?

SQL 如何根据当前事件和下一个事件确定操作的持续时间?

汇总具有连续日期范围的行

如何在 JSONB 数组的每个对象中添加新的键值对- PostgreSQL

获取所有用户的第一次和最后一次发货以及到达日期

在给定的日期范围内填写缺失的日期

Select 字段,除非另一个字段包含重复项

我如何编写一个遍历数组数组并将所有值连接成一个字符串的 postgres 函数

过滤具有一对多关系的两个表之间的数据

如何在 PL/SQL 中区分返回的 XML 值?