2013-11-23 55 views
0

我有一個簡單的方法,它使用Ruby語言中的存儲過程來查詢Sql-Server數據庫的表。查詢空表終止Ruby程序

@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或其他任何內容。 紅寶石識別該查詢或SP返回空結果的方式是什麼? 謝謝。

+0

你可以嘗試提供參數名稱嗎?例如 - 'exec spTPal_Vic_GetDeviceStateByIMEI @ myparametername ='000000000000000'' – gotqn

+0

在代碼中嘗試執行參數exec spTPal_Vic_GetDeviceStateByIMEI @ myparametername ='000000000000000'無法解決問題。程序仍然默默終止。 –

+0

因此,如果您在Management Studio中執行'exec spTPal_Vic_GetDeviceStateByIMEI'000000000000000''語句,則會返回一個空結果集? – gotqn

回答

0

根據我所看到的,這似乎是正確的行爲。您運行一個您希望什麼都不返回的查詢。然後迭代(空)結果,並且......沒有任何反應。嘗試檢查result.count或任何適當的方法來獲取結果集的大小 - 我不熟悉ConnectionManager返回的對象。但是不返回行的查詢不在其中並且本身就是一個錯誤。