探究临时表
1825 2002-05-29 03:08:09 1.何时创建新的临时表
每在查询分析器中打开一个新的窗口就可以建立独立的临时表[create table #temp_table (c_cinvcode varchar(20))]
当vb客户端程序运行时窗口联接(cnn)后可以建立独立的临时表
推论:每一个联接(cnn)对应一个临时表
问题1:vb客户端程序用sql语句建立临时表1后再通过存储过程建立临时表2并访问临时表1.存储过程中可访问客户端建立的临时表1,但客户端程序却无法使用存储过程创建的临时表2
问题2:临时表何时被干掉?
vb窗体卸载后载打开可建立临时表
联接对象释放后不可建立临时表??下例 第二次运行模块会在create #temp_table 时报错
例:
'vb程序代码
Public Sub fillbill()
Dim sql_str As String
Dim rst As New ADODB.Recordset
Dim cnn As New ADODB.Connection
cnn.open "Provider=SQLOLEDB.1 *********"
rst.Open "create table #temp_table (c_cinvcode varchar(20))",cnn'√
rst.Open "select * from #temp_table", cnn '√
If rst.State = 1 Then rst.Close
rst.Open "exec tem_procedure", cnn '√
MsgBox rst.Fields(0) '√
If rst.State = 1 Then rst.Close rst.Open "select * from #temp_table1", cnn '×
If rst.State = 1 Then rst.Close
Set rst = Nothing
if cnn.state = 1 then cnn.close
set rst = nothing
end Sub
--sqlserver 2000
create procedure tem_procedure
as
set nocount on
create table #temp_table1 (cinvccode varchar(20))
insert into #temp_table(c_cinvcode) values('1')
select * from #temp_table
GO