所以我创建了一个存储过程,它会命中 Dynamics GP Vendor 表。它需要能够访问不同数据库中的同一张表。我看到的一种可能的解决方案是只执行一个参数,查询写为 varchar。这是存储过程中实际的代码:
Procedure [dbo].[DGP_addVendor]
@dbName varchar(4) = NULL
,@NoteIndex numeric(19,5) = NULL
,@VENDORID char(15) = NULL
, @VENDNAME char(65) = NULL
, @DEX_ROW_ID int = NULL output
, @O_ErrorCode int = 0 output
, @ADDRESS1 char(61) = ''
, @ADDRESS2 char(61) = ''
, @ADDRESS3 char(61) = ''
, @CITY char(35) = ''
, @STATE char(29) = ''
, @ZIPCODE char(11) = ''
, @COUNTRY char(61) = ''
, @PHNUMBR1 char(21) = '' as
declare @today datetime = convert(datetime,'01/01/1900')
declare @defaultDate datetime = convert(datetime,'01/01/1900')
--declare @DEX int = null
Declare @sql varchar(MAX) = @dbName + '.dbo.zDP_PM00200SI
'''+@VENDORID+'''
,'''+@VENDNAME+'''
,'''+@VENDNAME+'''
,'''+@VENDNAME+'''
,''PRIMARY''
,''PRIMARY''
,''PRIMARY''
,''PRIMARY''
,''''
,''''
,'''+@ADDRESS1+'''
,'''+@ADDRESS2+'''
,'''+@ADDRESS3+'''
,'''+@CITY+'''
,'''+@STATE+'''
,'''+@ZIPCODE+'''
,'''+@COUNTRY+'''
,'''+@PHNUMBR1+'''
,''''
,''''
,''''
,''''
,''''
,''''
,''''
,''''
,1
,''''
,''''
,''''
,0
,1
,0
,0
,''''
,0
,0
,0
,0
,0
,''''
,''''
,''''
,''''
,0
,''''
,1
,1
,1
,1
,0
,0
,1
,1
,0
,0
,0
,''''
,'+Convert(varchar,@defaultDate)+'
,'+Convert(varchar,@defaultDate)+'
,0
,0
,0
,0
,0
,0
,0
,0
,0
,0
,0
,0
,0
,0
,0
,0
,0
,'+Convert(varchar,@NoteIndex)+'
,''''
,'+Convert(varchar,@today)+'
,'+Convert(varchar,@today)+'
,''''
,1
,0
,1
,''''
,''''
,0
,0
,''''
,0
,0
,0
,0
,0
,0
,'+Convert(varchar,@defaultDate)+'
,0
,''''
,''''
,0
,9
,0
,''PRIMARY''
,' + Convert(varchar,@DEX_ROW_ID) + ' out'
EXEC(@sql)
这是我用来调用它的代码:
exec [mdpSupportServices].[dbo].[DGP_addVendor] 'LFD', @index, 'ANT0000001','Anthony Quisenberry',@row out, @error out, '8506 west Rd', '','','Louisville', 'KY', '40247', 'USA',''
它似乎没有做任何事情。如果我在错误的轨道上这样做,有人可以为我指出一个更好的方向吗?