2016-07-19 3 views
0

У меня есть хранимая процедура, данные которого выглядит, как показано нижевставки данных в двух временных таблиц с использованием хранимой процедуры

Stored procedure

Теперь то, что я хочу, я хочу, чтобы вставить свои данные в двух разных таблицах темп

Первая таблица температуры будет иметь эти столбцы

Doc_type, Doc_No, No_of_days 

Второй временный т в состоянии будет иметь столбцы

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 
+0

Объем Темп таблицы до сессии т.е. когда SP выполняется .Temp таблица больше не будет существовать ... –

+0

@sandeeprawat: Я знаю, что, но мне помочь с тем, как вставить в таблицу темп – BNN

+1

еще вам нужно для вставки данных, затем переместите таблицу создания вверх. и вставить в \ –

ответ

1

Получите все данные в таблицу temp, затем вставьте.

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 
+0

где я должен писать этот запрос внутри или вне SP? – BNN

+0

Я смущен после комментариев Где вы хотите это сделать? – NEER

+0

Я хочу показать это при выполнении SP. – BNN

Смежные вопросы