2012-01-10 180 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 
相关问题