2012-01-10 190 views
1

假設我在newid()函數的幫助下爲我的SQL Server數據庫表生成了PK。在Java我可以做這樣的事情:如何檢索插入到Delphi ADO時生成的uniqueidentifier的值?

... 
String query = "DECLARE @newGuid uniqueidentifier "+ 
"SET @newGuid = newid() "+ 
"INSERT INTO myTable(id, stringval) "+ 
"VALUES (@newGuid, "Hello") "+ 
"SELECT uid FROM @newGuid"; 
PreparedStatement ps = conn.prepareStatement(query); 
ResultSet rs = ps.executeQuery(); 
String uid = rs.getString("uid"); 

但是,當我試圖讓與德爾福+ ADO我被卡住原因ADO從DB可以獲取數據(的AdoQueryOpen法)或把數據DB( ExecSQL方法)。所以我不能在表格中插入新的值並獲取參數值。

回答

4

至少有兩種方法可以解決這個問題。

  1. 你可以把你的兩個SQL查詢到一個字符串(就像你在你的例子),並調用TADOQuery.OpenTADOQuery.Active := True。只要查詢返回某些內容,那麼只要有INSERT語句就沒有關係。

  2. 您可以在ADOQuery.Parameters集合中將參數的方向定義爲pdOutput,並在執行查詢後讀取該參數的值。

1

您正在對待@newGuid就好像它是一張桌子一樣。您在查詢中的最後一行應該是:

SELECT @newGuid as uid 
相關問題