【发布时间】:2021-09-06 19:49:21
【问题描述】:
我在新的 littre 项目中遇到了这个错误。
这里是代码:
Cmd.Connection = Cnx;
Cmd.CommandText = "DECLARE @command varchar(5000);";
Cmd.CommandText = "DECLARE @RestoreList TABLE(DB_name VARCHAR(100), RS_name VARCHAR(100), RS_DateCloture DATETIME);";
Cmd.CommandText = "SELECT @command = 'IF ''?'' IN (SELECT name FROM sys.databases WHERE HAS_DBACCESS(name) = 1 AND CASE WHEN state_desc = ''ONLINE'' THEN OBJECT_ID( QUOTENAME( name ) + ''.[dbo].[P_DOSSIER]'',''U'' ) END IS NOT NULL) BEGIN USE [?] SELECT DB_name = CAST(DB_NAME() AS VARCHAR(100)), RS_name = CAST(D_RaisonSoc AS VARCHAR(100)), RS_DateCloture = CAST((SELECT Max(v) FROM (VALUES ([D_FinExo01]), ([D_FinExo02]), ([D_FinExo03]),([D_FinExo04]),([D_FinExo05])) AS value(v)) AS DATETIME) FROM [?].[dbo].[P_DOSSIER] END';";
Cmd.CommandText = "INSERT INTO @RestoreList EXEC sp_MSforeachdb @command;";
Cmd.CommandText = "SELECT * FROM @RestoreList;";
SqlDataReader reader = Cmd.ExecuteReader();
如果有人能说出什么是错的?
【问题讨论】:
-
您使用的是哪个 dbms?上面的代码是特定于产品的。
-
您是否意识到您正在替换 5 次命令文本,只留下最后一个字符串作为执行的字符串?以错字结尾
-
是的@Steve。我看到。我已经尝试在一个独特的 CommandText 中纠正所有内容,但是出了点问题。但是如何只用一个 ComandText 编写可读的东西呢?