gpt4 book ai didi

sql-server - 条件中的 T-SQL USE 语句

转载 作者:行者123 更新时间:2023-12-03 03:24:18 25 4
gpt4 key购买 nike

看来USE语句是由MS SQL Server 2008R2编译的。

例如,

if(1=0)
begin
USE MyDB
end

结果将是执行 USE MyDB 而忽略 IF 语句。

如何更改它以适应条件?

附注还尝试了 execute sp_executesql N'USE [MyDB]',它适用于条件,但它不会更改当前上下文。

最佳答案

事实上,在运行时更改数据库的正确方法正是动态 SQL,它在实际执行之前不会被编译或验证。您的示例中涉及 sp_executesql 的失败代码实际上确实更改了上下文,但问题是更改仅适用于动态 SQL 批处理,而不适用于调用代码。要实际查看和使用该数据库,必须将更多代码放入动态 SQL block 内部,并由 EXEC/sp_executesql 立即执行:

USE master ;
EXEC (N'USE tempdb ; PRINT db_name() ;') ;
PRINT db_name() ;

如果您绝对需要进行动态数据库切换,我认为您可以重构脚本,使其仅构建一个包含要运行的命令的字符串,并且 1=0 条件仅在前面添加一个正确的USE语句来选择要使用的数据库。

关于sql-server - 条件中的 T-SQL USE 语句,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18160233/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com