【问题标题】:Stored Procedure Addition - Check if DB exists before proceeding存储过程添加 - 在继续之前检查数据库是否存在
【发布时间】:2021-10-16 16:35:38
【问题描述】:

我目前正在编写一个存储过程,它可以做几件事,但我想在开始时实现一个更改,如果提供数据库名称的变量结果不存在,这将导致 USP 不再继续。

下面是我当前使用的代码。

基本上,如果服务器上不存在@DBName,我希望存储过程不再继续,但如果它确实存在,那么我想继续。

DECLARE @FullyQualifiedTableName VARCHAR(100) = '[Sandbox].[Test].[USP_Test]';
DECLARE @DBName NVARCHAR(50) =
        (
            SELECT LEFT(@FullyQualifiedTableName, CHARINDEX('.', @FullyQualifiedTableName) - 1)

   );

谢谢!

【问题讨论】:

    标签: sql sql-server stored-procedures


    【解决方案1】:
    DECLARE @FullyQualifiedTableName VARCHAR(100) = '[Sandbox].[Test].[USP_Test]';
    DECLARE @DBName NVARCHAR(50) = (SELECT LEFT(@FullyQualifiedTableName, CHARINDEX('.', @FullyQualifiedTableName) - 1));
    
    IF EXISTS (SELECT TOP 1 1 FROM @DBName)
    BEGIN
      -- Your logic if DB Name Exists
    END;
    
    IF NOT EXISTS (SELECT TOP 1 1 FROM @DBName)
    BEGIN
      -- Your logic if DB Name Not Exists
    END;
    

    SELECT TOP 1 1 FROM [SomeTable] 这里查询将返回任何 1 条满足条件的匹配记录。

    IF EXISTSIF NOT EXISTS主要用于检查条件。它将始终根据您的查询返回 true 或 false。

    【讨论】:

      【解决方案2】:

      一种方法是查询字典。

      ...
      IF NOT EXISTS (SELECT *
                            FROM sys.databases
                            WHERE name = @dbname)
      BEGIN
        -- whatever you want to do if the database doesn't exist
      END;
      ...
      

      【讨论】:

      • 或者,IF DB_ID(@dbname) IS NULL
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-12-22
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-01-05
      • 1970-01-01
      相关资源
      最近更新 更多