Sql 对具有相似名称的所有数据库运行查询
我在一台服务器上有30个数据库。我需要对其中20个进行查询。我写了一些代码来处理这个问题,但它已经崩溃了,所以我一直在寻找如何纠正这个问题或改变我的做法的建议 错误信息: 味精102,15级,状态1,第16行Sql 对具有相似名称的所有数据库运行查询,sql,sql-server,sql-server-2014,Sql,Sql Server,Sql Server 2014,我在一台服务器上有30个数据库。我需要对其中20个进行查询。我写了一些代码来处理这个问题,但它已经崩溃了,所以我一直在寻找如何纠正这个问题或改变我的做法的建议 错误信息: 味精102,15级,状态1,第16行 “hr”附近的语法不正确 我需要运行的所有数据库都具有相似的名称: CustDB00001 CustDB00025 CustDB00076 CustDB09999 我的代码: set nocount on; DECLARE @db_name NVARCHAR (150) DECLAR
“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
任何关于如何纠正上述问题或如何更好地处理(可能没有光标)的建议都将不胜感激。我使用上述所有建议解决了这个问题。我现在坚定地陷入了一个全新的错误中。我不知道从哪里开始详细说明我的答案,但我会在接下来的几分钟内尝试,也许你可以告诉我们你在哪里/哪一行/收到了什么错误消息?我编辑并输入了错误代码:Msg 156,级别15,状态1,第28行关键字“RIGHT”附近的语法不正确。
+RIGHT(CONCAT('00000',dbname),5))+
您有一个额外的右括号。dbname
也应该是@db\u name
您可能需要在表中使用括号,因为您使用了一个数值作为别名。