1

我试图通过从 DOMDB 中获取列表来从 APPDB 中删除临时表名称。我无法找到或弄清楚 SQL 中的语法应该如何。

这是两种单独工作的代码的某种组合,但我想将两者结合起来在列表上进行迭代。

USE DOMDB
Declare @OPR_CODE char( 11 )
SET rowcount 0
SELECT OPR_CODE into #TEMPOPR from DOMN_OPR
SET rowcount 1
SELECT @OPR_CODE = OPR_CODE from #TEMPOPR

USE APPDB
DECLARE @OPRCODE NVARCHAR(MAX) = N'';

SELECT @OPRCODE += '
DROP TABLE ' 
   + QUOTENAME(OBJECT_SCHEMA_NAME([object_id]))
   + '.' + QUOTENAME(name) + ';'
FROM sys.tables 
WHERE name LIKE '% + OPR_CODE + 001%';
--something like if OPR_CODE='USER' it will be (WHERE name LIKE '%USER001%';

EXEC sp_executesql @OPRCODE;

while @@rowcount <> 0
begin
set rowcount 0
select * from #TEMPOPR where OPR_CODE = @OPR_CODE
delete #TEMPOPR where OPR_CODE = @OPR_CODE

set rowcount 1
select @OPR_CODE = OPR_CODE from #TEMPOPR
end
set rowcount 0
DROP table #TEMPOPR
4

2 回答 2

1

您需要使用正确的连接:

WHERE name LIKE '%' + @OPR_CODE + '001%'
于 2013-08-18T13:59:46.427 回答
0

这边走?LIKE '% +&'+@OPR_CODE+'&+001%';

于 2013-08-18T14:00:07.287 回答