asp 调用 存储过程的问题子选手(临时表的问题)
我想创建这样一个存储过程,
里面有两个Select 语句,
Select T.a1,T.id into #A from mytable T
Select C.id,#A.a1 from mytable C,#A where C.id = #A.id
让 command执行时返回第二条语句的结果?
-------------------Sql版--------------------------------------------
http://expert.csdn.net/Expert/topic/2098/2098643.xml?temp=.4524652
---------------------------------------------------------------
SET NOCOUNT ON
select z1 into #临时表1 from t1 where 条件1
select z1 into #临时表2 from t1 where 条件2
select t1.id,(select top1 z1 from 临时表1 where 关联 ) as writer,
(select z1 from 临时表2 where 关联) as check
from t1 where 条件
SET NOCOUNT OFF
---------------------------------------------------------------
调用数据库存储过程
< %Set Dataconn = Server.CreateObject(''ADODB.Connection'')
''建立连接对象
Dataconn.Open ''DSN=SinoTrans;SERVER=APP_SERVER;UID=sa;PWD=;
APP=Microsoft(R) Developer Studio;WSID=APP_SERVER;Regional=Yes''
Set cmdTemp = Server.CreateObject(''ADODB.Command'')
''建立命令对象
Set rst = Server.CreateObject(''ADODB.Recordset'')
''建立记录集对象
cmdTemp.CommandText = ''dbo.pd_test'' ''存储过程名称
cmdTemp.CommandType = 4
''命令类别为4,表示为存储过程
Set cmdTemp.ActiveConnection = Dataconn
Set tmpParam = cmdTemp.CreateParameter(''Return value'', 3, 4, 4)
cmdTemp.Parameters.Append tmpParam
Set tmpParam = cmdTemp.CreateParameter(''@BeginDate'', 135, 1, 16, riqi)
''创建输入参数对象
cmdTemp.Parameters.Append tmpParam
rst.Open cmdTemp, , 1, 3
''生成查询结果
% >
这里调用的存储过程为pd_test,这种是ADO中提供的标准方法,但存在一个问题,
就是当在存储过程中有两个以上的SELECT语句,但从逻辑上又不可能同时执行的时
候,ADO会提示你存储过程中SELECT语句太多,解决方法是直接用ADO的
CONNECTION对象的EXECUTE方法直接执行存储过程,如下:
< %
Set Dataconn = Server.CreateObject(''ADODB.Connection'')
''建立连接对象
Dataconn.Open ''DSN=SinoTrans;SERVER=APP_SERVER;UID=sa;PWD=;
APP=Microsoft(R) Developer Studio;WSID=APP_SERVER;Regional=Yes''
ss = ''EXECUTE dbo.pd_test '' & '''''' & riqi1 & ''''''
Set rs = dataconn.Execute(ss)
% >
里面有两个Select 语句,
Select T.a1,T.id into #A from mytable T
Select C.id,#A.a1 from mytable C,#A where C.id = #A.id
让 command执行时返回第二条语句的结果?
-------------------Sql版--------------------------------------------
http://expert.csdn.net/Expert/topic/2098/2098643.xml?temp=.4524652
---------------------------------------------------------------
SET NOCOUNT ON
select z1 into #临时表1 from t1 where 条件1
select z1 into #临时表2 from t1 where 条件2
select t1.id,(select top1 z1 from 临时表1 where 关联 ) as writer,
(select z1 from 临时表2 where 关联) as check
from t1 where 条件
SET NOCOUNT OFF
---------------------------------------------------------------
调用数据库存储过程
< %Set Dataconn = Server.CreateObject(''ADODB.Connection'')
''建立连接对象
Dataconn.Open ''DSN=SinoTrans;SERVER=APP_SERVER;UID=sa;PWD=;
APP=Microsoft(R) Developer Studio;WSID=APP_SERVER;Regional=Yes''
Set cmdTemp = Server.CreateObject(''ADODB.Command'')
''建立命令对象
Set rst = Server.CreateObject(''ADODB.Recordset'')
''建立记录集对象
cmdTemp.CommandText = ''dbo.pd_test'' ''存储过程名称
cmdTemp.CommandType = 4
''命令类别为4,表示为存储过程
Set cmdTemp.ActiveConnection = Dataconn
Set tmpParam = cmdTemp.CreateParameter(''Return value'', 3, 4, 4)
cmdTemp.Parameters.Append tmpParam
Set tmpParam = cmdTemp.CreateParameter(''@BeginDate'', 135, 1, 16, riqi)
''创建输入参数对象
cmdTemp.Parameters.Append tmpParam
rst.Open cmdTemp, , 1, 3
''生成查询结果
% >
这里调用的存储过程为pd_test,这种是ADO中提供的标准方法,但存在一个问题,
就是当在存储过程中有两个以上的SELECT语句,但从逻辑上又不可能同时执行的时
候,ADO会提示你存储过程中SELECT语句太多,解决方法是直接用ADO的
CONNECTION对象的EXECUTE方法直接执行存储过程,如下:
< %
Set Dataconn = Server.CreateObject(''ADODB.Connection'')
''建立连接对象
Dataconn.Open ''DSN=SinoTrans;SERVER=APP_SERVER;UID=sa;PWD=;
APP=Microsoft(R) Developer Studio;WSID=APP_SERVER;Regional=Yes''
ss = ''EXECUTE dbo.pd_test '' & '''''' & riqi1 & ''''''
Set rs = dataconn.Execute(ss)
% >
浙公网安备 33010602011771号