2011-10-26 46 views
1

今天,tiny_tds突然不接受多個execute返回:tiny_tds未能在第二個執行

C:\>ruby test_use.rb 
one 
two 
C:/test_use.rb:15:in `execute': Attempt to initiate a new Adaptive Server operation with results pending (TinyTds::Error) 
    from C:/test_use.rb:15 

的代碼只是三個USE S:

require 'rubygems' 
require 'yaml' 
require 'fastercsv' 
require 'tiny_tds' 
require 'iconv' 

CONFIG = YAML.load_file("config.yml") 

client = TinyTds::Client.new(:username => CONFIG["db"]["username"], :password => CONFIG["db"]["password"], 
    :host => CONFIG["db"]["server"], :database => CONFIG["db"]["database"]) 

puts "one" 
client.execute("USE DATAFEED") 
puts "two" 
client.execute("USE DATAFEED") 
puts "three" 
client.execute("USE DATAFEED") 

任何線索是什麼問題?我嘗試過重新啓動Windows機器。

回答

1

你必須終止與do的執行:

Client.execute("...").do

+3

請注意該語法。如果你嘗試了todo'results = client.execute(「...」)。do',你會得到受影響的行數而不是結果。我一直在做'results = client.execute(「...」)',稍後再調用client.do。 – jspooner

4

下面是我如何做到這一點的例子。

results = $regcenter_db.execute("select top 10 * from events") 
event_ids = results.collect { |i| i["event_id"] } 
results.do  
0

你必須調用do OR cancel。如果您正在執行某些操作,例如獲取部分結果,並且您對執行do方法不感興趣,則可以撥打cancel中止查詢。

相關問題