2016-12-23 3 views
0

Ich habe versucht, Stored Procedure (SP) mit einem anderen SP aus verknüpften DB-Code reibungslos ausgeführt, es gab keinen Fehler, aber es fügt keine Daten meiner Tabelle. HierAusführen von SP mit einem anderen SP von verknüpften DB

ist der Code der Stored Procedure

USE [MYDB] 
GO 
SET ANSI_NULLS ON 
GO 
SET QUOTED_IDENTIFIER ON 
GO 

ALTER PROCEDURE [dbo].[MYDB_SP] 
@ReportDate   smalldatetime ='19000101' 
AS 
IF(@ReportDate = '19000101') 
SELECT @ReportDate = convert(varchar(10), GETDATE(), 112) 

BEGIN 
SELECT * 
INTO #MYDBTABLETMP 
FROM MYDBTABLE 

INSERT INTO #MYDBTABLETMP  
    ([DATAAREAID] 
    ,[REPORTDATE] 
    ,[ACCOUNTNUM]  
    ,[NAME] 
    ,[CUSTGROUP] 
    ,[CURRENCYCODE] 
    ,[TOTAL]) 
((select SPTABLE.[DATAAREAID] 
,SPTABLE.[REPORTDATE] 
    ,SPTABLE.[ACCOUNTNUM] 
    ,SPTABLE.[NAME] 
    ,SPTABLE.[CUSTGROUP] 
    ,SPTABLE.[CURRENCYCODE] 
    ,SPTABLE.[TOTAL]  
    FROM OPENROWSET('SQLOLEDB','LINKEDSERVER'; 'USERNAM' ; 'PASSWORD' , 
'SET FMTONLY OFF; SET NOCOUNT ON; exec LINKEDDB.LINKEDDB_SP 1,''20161201'' ') as SPTABLE)) 

delete MYDBTABLE where DATAAREAID = 'AAA' 

INSERT INTO MYDBTABLE 
SELECT * FROM #MYDBTABLETMP WHERE DATAAREAID = 'AAA' 

DROP TABLE #ERPCUSTAGINGTMP 
END 
+0

Haben Sie den Inhalt von '# MYDBTABLETMP' nach dem Einfügen von verknüpften sp überprüft? Hat es notwendige Daten? – WiSeeker

Antwort

0

Versuchen Einsatz dieses in Verfahren (= zwischen BEGIN und END):

IF(@ReportDate = '19000101') 
SELECT @ReportDate = convert(varchar(10), GETDATE(), 112) 

Jetzt Ihr Skript nicht erreicht beginnen. Und erstellen Sie nur die erste Anweisung als Ihre Prozedur.

ALTER PROCEDURE [dbo].[MYDB_SP] 
@ReportDate   smalldatetime ='19000101' 
AS 
BEGIN 
    IF(@ReportDate = '19000101') 
     SELECT @ReportDate = convert(varchar(10), GETDATE(), 112) 
    ... 
END