我尝试使用链接的数据库代码中的另一个 SP 执行存储过程(SP),工作顺利,没有错误,但它不会在我的表中插入数据。
这是存储过程的代码
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
最佳答案
尝试将此插入到过程中(= BEGIN 和 END 之间):
IF(@ReportDate = '19000101')
SELECT @ReportDate = convert(varchar(10), GETDATE(), 112)
现在你的脚本还没有到达开始。并仅创建第一个语句集作为您的过程。
ALTER PROCEDURE [dbo].[MYDB_SP]
@ReportDate smalldatetime ='19000101'
AS
BEGIN
IF(@ReportDate = '19000101')
SELECT @ReportDate = convert(varchar(10), GETDATE(), 112)
...
END
关于mysql - 使用链接 DB 中的另一个 SP 执行 SP,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41297047/