我有一个包含uniqueidentifier类型字段的表格,该字段将通过调用NEWID()
来填充。
我想要做的是在我将记录插入表格后立即取回创建的GUID。
如果我从SQL Management Studio运行如下的SQL,那么非常有用,打印出我的GUID的值
DECLARE @GUID uniqueidentifier;SET @GUID = NEWID();SELECT @GUID as guid;
我的问题是,如何使用VBScript从Classic ASP获取@GUID的值?
我试过这个
<%
conn.open Application("ConnectionString")
sql = "DECLARE @GUID uniqueidentifier;SET @GUID = NEWID();SELECT @GUID as guid;"
set res = conn.execute(sql)
response.write res.fields.count
response.write res("guid")
%>
但它似乎不起作用。 res
对象没有任何字段,因此尝试读取guid
字段错误。
我得到的错误是在我尝试读取res("guid")
答案 0 :(得分:3)
看起来您已经简化了查询。显示的代码段按原样运行。
但是,如果您正在运行存储过程或多语句查询,conn.execute可以返回多个记录集,您可以使用RecordSet.nextRecordSet
逐步完成,直至到达最后一个记录集。
状态消息也可能会干扰记录集,因此请确保在多语句批处理中使用SET NOCOUNT ON
。
答案 1 :(得分:1)
我一直都在使用它:
Dim rs , cmd
Set rs = server.createobject("ADODB.Recordset")
Set cmd = server.createobject("ADODB.Command")
cmd.ActiveConnection = Application("ConnectionString")
cmd.CommandText = "DECLARE @GUID uniqueidentifier;SET @GUID = NEWID();SELECT @GUID as guid;"
cmd.CommandType = adCmdText
rs.CursorLocation = adUseClient
rs.Open cmd, , adOpenForwardOnly, adLockReadOnly
response.write rs(0)
答案 2 :(得分:0)
也许我误读了,但是如果你做了这样的话会怎么样:
create proc dbo.myreturn
as
declare @returnval nvarchar(255)
begin tran
DECLARE @GUID uniqueidentifier
SET @GUID = NEWID()
set @returnval=(select @GUID)
commit
select @returnval
更新:从ASP调用存储过程:http://support.microsoft.com/kb/164485