2016-01-29 161 views
0
USE XXX 
go 
CREATE GLOBAL TEMPORARY TABLE #dbo.tbl_gbl_temp11 
(parent_deal_id numeric(10,0) not null, 
    deal_id numeric(10,0) not null, 
    code_name varchar(100) null 
) 
go 
IF OBJECT_ID('dbo.tbl_gbl_temp1') IS NOT NULL 
    PRINT '<<< CREATED TABLE dbo.tbl_gbl_temp1 >>>' 
ELSE 
    PRINT '<<< FAILED CREATING TABLE dbo.tbl_gbl_temp1 >>>' 
go 

創建GLOBAL TEMPORARY當我執行它上面提供了以下錯誤:無法在SYBASE ASE 15.7.0

Number (156) Severity (15) State (2) Server (XXX) Incorrect syntax near the keyword 'TABLE'.

回答

0

ASE 16.0 SP02支持CREATE GLOBAL TEMPORARY TABLE。

+0

但是我們的數據庫是Sybase ASE 15.7.0。所以我們沒有「GLOBAL TEMPORARY」的特權。 – Balakrishna

0

有在Sybase ASE沒有CREATE GLOBAL TEMPORARY TABLE命令。

SAP ASE 16.0版本SP2支持CREATE GLOBAL TEMPORARY TABLE

對於臨時表,在你的情況下,將指定tempdb..tbl_name

因此,使用標準的創建表的語法,用一個#或全局臨時表前綴本地臨時表是

USE XXX 
go 
CREATE TABLE tempdb..tbl_gbl_temp11 //if the owner is dbo it does not need to be listed. 
(parent_deal_id numeric(10,0) not null, 
    deal_id numeric(10,0) not null, 
    code_name varchar(100) null 
) 
go 

IF OBJECT_ID('tempdb..tbl_gbl_temp1') IS NOT NULL 
    PRINT '<<< CREATED TABLE dbo.tbl_gbl_temp1 >>>' 
ELSE 
    PRINT '<<< FAILED CREATING TABLE tempdb..tbl_gbl_temp1 >>>' 
go 

Sybase ASE Transact SQL Reference Guide: Temporary Tables

數據將在進程間共享,因此您可能需要添加spid或其他標識符,以確保在清理用戶/會話數據時不會截斷其他進程數據。

+0

感謝您的及時回覆,它非常有幫助。但是,存在概念上的疑問,我們使用tempdb..tbl_gbl_temp1表來存儲基於特定請求的一些信息,並且一旦從存儲的proc訪問數據,我們截斷表,因爲表中的數據不再使用。現在,這個臨時表實例是爲每個用戶分別創建的(即每個連接),還是由所有用戶訪問的同一個表?基本上,當多個用戶並行使用時,臨時表的行爲如何。 – Balakrishna

+0

數據將在進程之間共享,因此您可能需要添加spid標識符以確保不會截斷其他進程數據。 –

+0

謝謝邁克爾。 – Balakrishna