【问题标题】:Error : Must declare the table variable "@RestoreList" [closed]错误:必须声明表变量“@RestoreList”[关闭]
【发布时间】: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 编写可读的东西呢?

标签: c# sql


【解决方案1】:
Cmd.CommandText = @"
DECLARE @command varchar(5000);
-- all your lines here
SELECT * FROM @RestoreList;";

【讨论】:

    猜你喜欢
    • 2014-06-14
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-08-02
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多