臨時表我研究這一點,最近聽上去很像的解決辦法可能是這樣...... dynamically creating the #temp table and then used to insert the data插入與存儲過程中沒有發生
不幸的是,我不確定是否完全適用。所以,我的問題。當我執行下面的存儲過程時,我的臨時表是空的。當然,如果我單獨運行每個步驟來導入他們工作的數據。我假設存儲過程中存在EXEC
問題。我有2個臨時表,我正在嘗試創建並插入和從他們組裝我的數據...提前謝謝。
ALTER PROC [taxes_ext_sp]
AS
BEGIN
CREATE TABLE ##taxes (
[Apply Date] date
, [Journal Code] varchar(8)
, [Journal Ctrl #] varchar(16)
, [Company] varchar(8)
, [Description] varchar(255)
, [Invoice #] varchar(16)
, [Credit] decimal(20,2)
, [Debit] decimal(20,2)
, [Balance] decimal(20,2));
CREATE TABLE ##company (
company_code varchar(32));
DECLARE @company_id Nvarchar(MAX)
, @db_name varchar(32)
, @sql Nvarchar(MAX);
SELECT @company_id =
company_code FROM ctrl.dbo.comp;
SELECT @db_name =
name FROM sys.databases
JOIN ctrl.dbo.comp
ON sys.databases.name = ctrl.dbo.comp.db_name
JOIN ##company
ON ##company.company_code = ctrl.dbo.comp.company_code;
SET @sql = 'INSERT INTO ##taxes
SELECT convert(varchar(12),dateadd(dd,(trx.date_applied - 639906),''1/1/1753''),101) --as [Date]
, trx.journal_type --as [Journal Code]
, trx.journal_ctrl_num --as [Journal Ctrl #]
, '[email protected]_id+' --as Company
, trx.journal_description --as [Description]
, trxdet.document_1 --as [Invoice #]
, bal.home_credit --as [Total Home Credit]
, bal.home_debit --as [Total Home Debit]
, bal.current_balance --as [Balance]
FROM '[email protected]_name+'.dbo.trx trx
LEFT OUTER JOIN '[email protected]_name+'.dbo.trxdet trxdet
ON trx.journal_ctrl_num = trxdet.journal_ctrl_num
LEFT OUTER JOIN '[email protected]_name+'.dbo.bal bal
ON trxdet.account_code = bal.account_code
WHERE trx.date_posted > 0
AND trx.date_applied >= ''734503''
AND trx.date_applied <= ''734775'')';
EXEC (@company_id); **FORGOT TO ADD THIS.
EXEC (@sql);
SELECT * FROM ##taxes;
--SELECT * FROM ##company
--IF EXISTS
--(
--SELECT *
--FROM tempdb.dbo.sysobjects
--WHERE ID = OBJECT_ID(N'tempdb..##taxes')
--)
--BEGIN
--DROP TABLE ##taxes
--END
--IF EXISTS
--(
--SELECT *
--FROM tempdb.dbo.sysobjects
--WHERE ID = OBJECT_ID(N'tempdb..##company')
--)
--BEGIN
--DROP TABLE ##company
--END
END;
沒有必要使用全局臨時表(''##)。在外部作用域('exec'外部)創建的本地臨時表('#')將可以在內部作用域中訪問。 –