查询空表终止Ruby程序

时间:2013-11-23 08:40:30

标签: sql ruby sql-server

我有一个简单的方法,它使用Ruby语言中的存储过程查询Sql-Server数据库的表。

@app_config = YAML.load_file("#{File.dirname(__FILE__)}/../../config/sa.gw.c.victim.yml")
connection_manager = ConnectionManager.new(@app_config["tpaldb"]) #H
 begin        
    sql = "exec spTPal_Vic_GetDeviceStateByIMEI '000000000000000'"
    result = connection_manager.execute_sproc(sql)
          result.each {|r| 
          #puts "#{r['DeviceID']} #{r['UniqueID']} #{r['DeviceType']}"
          puts r['DeviceID']           
          }
    connection_manager.connection.close()
     rescue => e
      puts "An error occurred while getting the device info for victimdevice_IMEI  #{victimdevice_IMEI} detail: #{e.message}"  

    end   

现在桌子是空的。当result = connection_manager.execute_sproc(sql)代码执行时,ruby程序会默默地终止并识别任何事情。 我想要知道的是,查询在前端返回了一个空结果,而不是更改存储过程以返回null或其他任何内容。 ruby识别该查询或SP返回空结果的方式是什么。 谢谢。

1 个答案:

答案 0 :(得分:0)

根据我的看法,这似乎是正确的行为。您运行一个您希望不返回任何内容的查询。然后迭代(空)结果......没有任何反应。尝试检查result.count或任何适当的方法来获取结果集的大小 - 我不熟悉ConnectionManager返回的对象。但是,不返回任何行的查询本身并不是错误。