【问题标题】:Execute SP with another SP from linked DB使用链接数据库中的另一个 SP 执行 SP
【发布时间】:2017-05-08 21:35:48
【问题描述】:

我尝试使用链接数据库代码中的另一个 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

【问题讨论】:

  • 从链接的 sp 插入后,您是否检查过 #MYDBTABLETMP 的内容?它有必要的数据吗?

标签: mysql sql-server tsql stored-procedures exec


【解决方案1】:

尝试将 this 插入过程中(=在 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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-06-06
    • 1970-01-01
    • 2022-08-16
    • 2017-12-25
    • 2011-02-26
    相关资源
    最近更新 更多