我在服务器上有30个数据库。我需要针对其中的20个运行查询。我写了一些代码来处理这个问题,但它正在轰炸,所以我正在寻找关于如何纠正这个或改变我的方式的建议。
错误信息:
Msg 102,Level 15,State 1,Line 16
'hr'附近的语法不正确。
我需要针对所有数据库运行的数据库都有类似的名称:
CustDB00001
CustDB00025
CustDB00076
CustDB09999
我的代码:
set nocount on;
DECLARE @db_name NVARCHAR (150)
DECLARE c_db_names CURSOR FOR
SELECT name
FROM sys.databases
WHERE name like ('Billing%')
OPEN c_db_names
FETCH c_db_names INTO @db_name
WHILE @@Fetch_Status = 0
BEGIN
EXEC('INSERT INTO #B1report
SELECT
hr.client,
RTRIM(LTRIM(hc.facility)) AS facility,
h.gcode, h.rcode,
u.bill,
hr.*
FROM
CustDB' + dbname + '.dbo.table1 h
JOIN
CustDB' + dbname + '.dbo.table2 hr ON hr.[hrcounter] = h.hcounter
JOIN
CustDB' + dbname + '.dbo.table3 hc ON hc.[hccounter] = hr.hrcounter
JOIN
CustDB' + dbname + '.dbo.table4 u ON u.ucounter = hc.hccounter
WHERE 1 = 1
AND CAST(2.r_date AS DATE) BETWEEN ''01/01/2017'' AND ''6/18/2018''
AND 1.rcode IN (''69'', ''70'')')
FETCH c_db_names INTO @db_name
END
CLOSE c_db_names
DEALLOCATE c_db_names
SELECT * FROM #B1report
有关如何纠正上述内容或如何更好地处理(可能没有光标)的任何建议,将不胜感激。
答案 0 :(得分:0)
我使用上述所有建议解决了这个问题。我现在坚定地陷入一个全新的错误。我不知道从哪里开始详细说明我的答案,但我将在接下来的几分钟内尝试