Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/sql/76.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/sql-server-2008/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Sql Msg 102,15级,状态1,第24行“.”附近的语法不正确_Sql_Sql Server 2008 - Fatal编程技术网

Sql Msg 102,15级,状态1,第24行“.”附近的语法不正确

Sql Msg 102,15级,状态1,第24行“.”附近的语法不正确,sql,sql-server-2008,Sql,Sql Server 2008,全部。。。基于我最近在这里发布的另一个问题,我构建了这个存储过程,但在执行时,我收到了标题中的错误 正如你所看到的,我试图删除任何别名,但这并不重要。也不知道如何使用PRINT查看此问题。当然,独立的SELECT语句是独立工作的 错误出现后,我甚至可以从临时表中提取结果。那么这是脚本中的问题还是结果?谢谢你的帮助。我也只使用WHERE语句来限制测试结果 ALTER PROC ap_vhdr_test AS SET NOCOUNT ON IF OBJECT_ID('temp.dbo.#ap

全部。。。基于我最近在这里发布的另一个问题,我构建了这个存储过程,但在执行时,我收到了标题中的错误

正如你所看到的,我试图删除任何别名,但这并不重要。也不知道如何使用PRINT查看此问题。当然,独立的SELECT语句是独立工作的

错误出现后,我甚至可以从临时表中提取结果。那么这是脚本中的问题还是结果?谢谢你的帮助。我也只使用WHERE语句来限制测试结果

    ALTER PROC ap_vhdr_test AS
SET NOCOUNT ON
IF OBJECT_ID('temp.dbo.#ap_vend_det') is NOT NULL
DROP TABLE #ap_vend_det;

CREATE TABLE #ap_vend_det           
(db_name varchar(32)
, vendor_name varchar(40)
, vendor_code varchar(12)
, voucher_no varchar(16)
, invoice_num varchar(16)
, inv_date varchar(16)
, due_date varchar(16)
, apply_date varchar(16)
, total float
, line_desc varchar(40)
, company_id smallint
, gl_num varchar(32)
, acct_site varchar(32)
, sort_code varchar(32)
, nat_gl varchar(32)
, gl_desc varchar(40)
, category nvarchar(510)
, sub_category nvarchar(510)
, po_num varchar(16)
, vendor_class varchar(8)
)
INSERT INTO #ap_vend_det
EXEC sp_MSforeachdb N'IF ''?'' NOT IN ( ''model'',''tempdb'',''master'',''msdb'')
BEGIN SELECT DISTINCT db_name = ''?''
, amaster.addr1 --as vendor_name
, amaster.vendor_code --as vendor_code
, apdet.trx_ctrl_num --as voucher_no
, aphdr.doc_ctrl_num --as invoice_num
, CONVERT(varchar(16),dateadd(dd,(aphdr.date_doc - 639906),''1/1/1753''),101) --as inv_date 
, CONVERT(varchar(16),dateadd(dd,(aphdr.date_due - 639906),''1/1/1753''),101) --as due_date
, CONVERT(varchar(16),dateadd(dd,(aphdr.date_applied - 639906),''1/1/1753''),101) --as apply_date
, aphdr.amt_net --as total
, aphdr.doc_desc --as line_desc
, gldet.company_id --as company_id
, gldet.account_code --as gl_num
, gldet.seg2_code --as acct_site
, gldet.seg3_code --as sort_code
, gldet.seg1_code --as nat_gl
, gldet.description --as gl_desc
, ap_coa.group_header --as category
, ap_coa.group_label  --as sub_category
, apdet.po_ctrl_num --as po_num
, apvend.vend_class_code --as vendor_class
FROM ?.dbo.amaster --amaster
JOIN ?.dbo.aphdr --aphdr                        --**
    ON amaster.vendor_code = aphdr.vendor_code
    AND amaster.pay_to_code = aphdr.pay_to_code
JOIN ?.dbo.apdet --apdet
    ON aphdr.trx_ctrl_num = apdet.trx_ctrl_num
JOIN ?.dbo.gldet --gldet
    ON aphdr.journal_ctrl_num = gldet.journal_ctrl_num
JOIN ?.dbo.glt --glt
    ON gldet.journal_ctrl_num = glt.journal_ctrl_num
JOIN ?.dbo.apvend --apvend
    ON amaster.vendor_code = apvend.vendor_code
JOIN reps.dbo.ap_coa --ap_coa
    ON gldet.seg1_code = ap_coa.acct_code
WHERE aphdr.date_applied >= ''734785''              
END';

SELECT * FROM #ap_vend_det;

如果数据库名称中包含空格或其他字符,则此操作将失败。你需要用方括号把它们括起来,例如

FROM [?].dbo.amaster --amaster
不仅如此,因为您使用的是3个零件名称,所以还需要在FROM子句中为表别名

FROM [?].dbo.amaster amaster
JOIN [?].dbo.aphdr aphdr                        --**
    ON amaster.vendor_code = aphdr.vendor_code
    AND amaster.pay_to_code = aphdr.pay_to_code
JOIN [?].dbo.apdet apdet
    ON aphdr.trx_ctrl_num = apdet.trx_ctrl_num
JOIN [?].dbo.gldet gldet
    ON aphdr.journal_ctrl_num = gldet.journal_ctrl_num
JOIN [?].dbo.glt glt
    ON gldet.journal_ctrl_num = glt.journal_ctrl_num
JOIN [?].dbo.apvend apvend
    ON amaster.vendor_code = apvend.vendor_code
JOIN reps.dbo.ap_coa ap_coa
    ON gldet.seg1_code = ap_coa.acct_code
WHERE aphdr.date_applied >= ''734785''     

谢谢数据库名称中使用的唯一其他字符是下划线。我随信附上了这封信?在括号[?]中,读取别名并。。。等待结果和戏剧性的影响停止,停止,停止使用sp_MSforeachdb。它是不受支持的,没有文档记录是有原因的!它不仅不处理具有特殊字符的数据库,有时还完全跳过数据库。请看和