Sql server 在经典ASP/VBScript中,如何使用set@local_variable获取变量集的值?
我有一个表,它有一个类型为的字段,该字段将由对的调用填充 我想做的是在我向表中插入一条记录后立即获取创建的GUID 如果我从SQLManagementStudio运行以下SQL,它会非常有用地打印出GUID的值Sql server 在经典ASP/VBScript中,如何使用set@local_variable获取变量集的值?,sql-server,vbscript,asp-classic,Sql Server,Vbscript,Asp Classic,我有一个表,它有一个类型为的字段,该字段将由对的调用填充 我想做的是在我向表中插入一条记录后立即获取创建的GUID 如果我从SQLManagementStudio运行以下SQL,它会非常有用地打印出GUID的值 DECLARE @GUID uniqueidentifier;SET @GUID = NEWID();SELECT @GUID as guid; 我的问题是,如何使用VBScript从经典ASP获取@GUID的值 我试过这个 <% conn.open Application("C
DECLARE @GUID uniqueidentifier;SET @GUID = NEWID();SELECT @GUID as guid;
我的问题是,如何使用VBScript从经典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字段时出错
我得到的错误是在与请求的名称或序号对应的集合中找不到项。在我试图读取resguid中的值的那一行,看起来您简化了查询。显示的代码段按原样工作 但是,如果您正在运行存储过程或多语句查询,conn.execute可以返回多个记录集,您可以逐步使用这些记录集,直到找到最后一个记录集
状态消息也会干扰记录集,因此请确保在多语句批处理中使用SET NOCOUNT ON。看起来您简化了查询。显示的代码段按原样工作 但是,如果您正在运行存储过程或多语句查询,conn.execute可以返回多个记录集,您可以逐步使用这些记录集,直到找到最后一个记录集
状态消息也会干扰记录集,因此请确保在多语句批处理中使用SET NOCOUNT ON。可能我误读了,但如果您这样做会怎么样:
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调用存储过程:可能我误读了,但如果您这样做会怎么样:
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调用存储的进程:我一直在使用它:
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)
我一直在用这个:
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)
execute是否会返回多个记录集,每个SQL语句返回一个记录集?如果是这样的话,当您说res.nextRecordSets不工作时,您可能需要调用它-您是否收到错误消息,或者??是execute返回多个记录集,每个SQL语句一个记录集?如果是这样,当您说res.nextRecordSetNot work时,您可能需要调用res.nextRecordSets-您是否收到错误消息或??这基本上就是我正在做的,但在与请求的名称或序号对应的集合中找不到我得到的项。在response.write rs0上这基本上就是我正在做的,但是在与请求的名称或序号对应的集合中找不到我获取的项。在response.write上写入rs0