Sql server 如何在不使用存储过程的情况下一次访问数据库时插入然后选择
我希望能够在表中插入一行,然后选择新创建的标识并将其返回到经典的asp JScript,而无需创建存储过程。能做到吗 基本上是这样的:Sql server 如何在不使用存储过程的情况下一次访问数据库时插入然后选择,sql-server,asp-classic,Sql Server,Asp Classic,我希望能够在表中插入一行,然后选择新创建的标识并将其返回到经典的asp JScript,而无需创建存储过程。能做到吗 基本上是这样的: ... rs = Server.CreateObject("ADODB.RecordSet"); rs.Open("INSERT INTO ...;SELECT SCOPE_IDENTITY() x;", objConn, ... Response.Write(rs("x").Value); 以下操作可行,但相当于两次访问数据库: ... objConn.Ex
...
rs = Server.CreateObject("ADODB.RecordSet");
rs.Open("INSERT INTO ...;SELECT SCOPE_IDENTITY() x;", objConn, ...
Response.Write(rs("x").Value);
以下操作可行,但相当于两次访问数据库:
...
objConn.Execute("INSERT INTO ...
rs = Server.CreateObject("ADODB.RecordSet");
rs.Open("SELECT SCOPE_IDENTITY() x;", objConn, ...
Response.Write(rs("x").Value);
您可以尝试直接调用存储过程,并将结果存储在如下数组中: dim rs、arr、sql sql=execmyproc set rs=Server.CreateObjectADODB.Recordset rs_temp.open sql,应用程序连接卸载,3,3,1 如果不是rs.bof和rs.eof,则runsql=rs.getrows 克洛斯 设置rs=无 在存储过程中,您可以执行任何您想要的操作
CREATE PROCEDURE myProc
AS
BEGIN
UPDATE
myTable
SET
myField = 42
SELECT
myField
FROM
myTable
WHERE
someCondition = 1
END
-编辑-
获取ASP函数的更完整版本。请注意,您必须将其包含在一个单独的文件中,顶部有一个VB脚本说明符,而不是JScript,这样它才能正常工作。我认为您首先收到的是受插入影响的行数,然后是标识值。在访问记录集之前,可以使用SET NOCOUNT ON或rs.MoveNext。 e、 g 或
你试过了吗?是的,记录集是无效的,它不喜欢它,应该可以用。如果记录集无效,这里可能会有其他配置问题。如果我不在记录集中包含insert,而是使用objConn.execute,它可以正常工作,但这需要两次访问数据库,因此播放中没有其他配置问题。这可能会有所帮助。无论如何,从sql注入的角度来看,它更安全:
rs = Server.CreateObject("ADODB.RecordSet");
rs.Open("SET NOCOUNT ON;INSERT INTO ...;SELECT SCOPE_IDENTITY() x;", objConn, ...
Response.Write(rs("x").Value);
rs = Server.CreateObject("ADODB.RecordSet");
rs.Open("INSERT INTO ...;SELECT SCOPE_IDENTITY() x;", objConn, ...
rs.MoveNext()
Response.Write(rs("x").Value);