使用存储过程将数据插入到两个临时表中
Insert data into two temporary tables using a stored procedure
我有一个存储过程,其数据如下所示
现在我想要的是,我想把它的数据插入两个不同的temp table
第一个临时 table 将包含这些列
Doc_type, Doc_No, No_of_days
第二个温度 table 将有列
Username, DocType, No_of_days
我这样试过:
CREATE TABLE #table1
(
Doc_type varchar(55),
Doc_No varchar(55),
No_of_days varchar(55),
)
INSERT INTO #table1
但是它抛出一个错误:
Incorrect syntax near the keyword 'END'.
这是我完整的存储过程:
Alter procedure GET_INWARD_REMINDER_REPORT
AS
BEGIN
Select
U.first_name + ' ' + U.last_name UserName,
TH.User_ID,
TY.Type_desc Document_Type,
RA.mkey Reporting_To,
U.Email AS UserEmail,
RAU.Email AS RA1_Email,
RAU.first_name + ' ' + RAU.last_name RAName,
TH.Doc_No,
DATEDIFF(DAY, TH.LastAction_DateTime, GETDATE()) - DATEDIFF(WK, TH.LastAction_DateTime, GETDATE()) AS No_Of_Days_Doc_Pending
from
inward_doc_tracking_hdr TH
inner join
user_mst U ON TH.User_Id = U.mkey
inner join
emp_mst M ON M.mkey = U.employee_mkey
inner join
type_mst_a TY ON TY.master_mkey = TH.doc_type
inner join
emp_mst RA ON RA.mkey = M.Reporting_To
inner join
user_mst RAU ON RAU.employee_mkey = RA.mkey
where
TH.Status_flag NOT IN (5,14) --- 5 for close, 14 for return
and TH.To_user IS NOT NULL
CREATE TABLE #table1
(
Doc_type varchar(55),
Doc_No varchar(55),
No_of_days varchar(55),
)
INSERT INTO #table1
获取所有数据到临时 table 然后插入。
INSERT INTO #MainTemp
EXEC [GET_INWARD_REMINDER_REPORT];
INSERT INTO #table1
select Doc_type, Doc_No, No_of_days from #MainTemp
INSERT INTO #table2
select Username, DocType, No_of_days from #MainTemp
已更新
您可以使用 MainTempTable
.
Alter procedure GET_INWARD_REMINDER_REPORT
AS
BEGIN
IF EXISTS(SELECT * FROM dbo.MainTempTable)
DROP TABLE dbo.MainTempTable
Select
U.first_name + ' ' + U.last_name UserName,
TH.User_ID,
TY.Type_desc Document_Type,
RA.mkey Reporting_To,
U.Email AS UserEmail,
RAU.Email AS RA1_Email,
RAU.first_name + ' ' + RAU.last_name RAName,
TH.Doc_No,
DATEDIFF(DAY,TH.LastAction_DateTime,GETDATE()) - DATEDIFF(WK,TH.LastAction_DateTime, GETDATE())
AS No_Of_Days_Doc_Pending
INTO MainTempTable
from inward_doc_tracking_hdr TH
inner join
user_mst U ON TH.User_Id = U.mkey
inner join
emp_mst M ON M.mkey = U.employee_mkey
inner join
type_mst_a TY ON TY.master_mkey = TH.doc_type
inner join
emp_mst RA ON RA.mkey = M.Reporting_To
inner join
user_mst RAU ON RAU.employee_mkey = RA.mkey
where
TH.Status_flag NOT IN (5,14) --- 5 for close, 14 for return
and TH.To_user IS NOT NULL
SELECT
userName,
COUNT(Doc_No) CountofDocNo
FROM
MainTempTable
GROUP BY
userName
END
我有一个存储过程,其数据如下所示
现在我想要的是,我想把它的数据插入两个不同的temp table
第一个临时 table 将包含这些列
Doc_type, Doc_No, No_of_days
第二个温度 table 将有列
Username, DocType, No_of_days
我这样试过:
CREATE TABLE #table1
(
Doc_type varchar(55),
Doc_No varchar(55),
No_of_days varchar(55),
)
INSERT INTO #table1
但是它抛出一个错误:
Incorrect syntax near the keyword 'END'.
这是我完整的存储过程:
Alter procedure GET_INWARD_REMINDER_REPORT
AS
BEGIN
Select
U.first_name + ' ' + U.last_name UserName,
TH.User_ID,
TY.Type_desc Document_Type,
RA.mkey Reporting_To,
U.Email AS UserEmail,
RAU.Email AS RA1_Email,
RAU.first_name + ' ' + RAU.last_name RAName,
TH.Doc_No,
DATEDIFF(DAY, TH.LastAction_DateTime, GETDATE()) - DATEDIFF(WK, TH.LastAction_DateTime, GETDATE()) AS No_Of_Days_Doc_Pending
from
inward_doc_tracking_hdr TH
inner join
user_mst U ON TH.User_Id = U.mkey
inner join
emp_mst M ON M.mkey = U.employee_mkey
inner join
type_mst_a TY ON TY.master_mkey = TH.doc_type
inner join
emp_mst RA ON RA.mkey = M.Reporting_To
inner join
user_mst RAU ON RAU.employee_mkey = RA.mkey
where
TH.Status_flag NOT IN (5,14) --- 5 for close, 14 for return
and TH.To_user IS NOT NULL
CREATE TABLE #table1
(
Doc_type varchar(55),
Doc_No varchar(55),
No_of_days varchar(55),
)
INSERT INTO #table1
获取所有数据到临时 table 然后插入。
INSERT INTO #MainTemp
EXEC [GET_INWARD_REMINDER_REPORT];
INSERT INTO #table1
select Doc_type, Doc_No, No_of_days from #MainTemp
INSERT INTO #table2
select Username, DocType, No_of_days from #MainTemp
已更新
您可以使用 MainTempTable
.
Alter procedure GET_INWARD_REMINDER_REPORT
AS
BEGIN
IF EXISTS(SELECT * FROM dbo.MainTempTable)
DROP TABLE dbo.MainTempTable
Select
U.first_name + ' ' + U.last_name UserName,
TH.User_ID,
TY.Type_desc Document_Type,
RA.mkey Reporting_To,
U.Email AS UserEmail,
RAU.Email AS RA1_Email,
RAU.first_name + ' ' + RAU.last_name RAName,
TH.Doc_No,
DATEDIFF(DAY,TH.LastAction_DateTime,GETDATE()) - DATEDIFF(WK,TH.LastAction_DateTime, GETDATE())
AS No_Of_Days_Doc_Pending
INTO MainTempTable
from inward_doc_tracking_hdr TH
inner join
user_mst U ON TH.User_Id = U.mkey
inner join
emp_mst M ON M.mkey = U.employee_mkey
inner join
type_mst_a TY ON TY.master_mkey = TH.doc_type
inner join
emp_mst RA ON RA.mkey = M.Reporting_To
inner join
user_mst RAU ON RAU.employee_mkey = RA.mkey
where
TH.Status_flag NOT IN (5,14) --- 5 for close, 14 for return
and TH.To_user IS NOT NULL
SELECT
userName,
COUNT(Doc_No) CountofDocNo
FROM
MainTempTable
GROUP BY
userName
END