我列出了需要从SQL Server中删除的表(大约100 ++)。以下是我将使用的示例代码
IF OBJECT_ID('dbo.DS_Area_TBL', 'U') IS NOT NULL
drop table dbo.DS_Area_TBL
Print 'dbo.DS_Area_TBL has been dropped'
我需要将表名100 ++时间替换为其他表名。如何编写可以自动生成查询列表的动态sql脚本?
您可以先生成脚本,然后使用动态sql执行:
CREATE TABLE a(a INT);
CREATE TABLE b(a INT);
CREATE TABLE c(a INT);
CREATE TABLE d(a INT);
CREATE TABLE e(a INT);
CREATE TABLE tab(tab_name SYSNAME); -- here are table names stored
INSERT INTO tab VALUES ('a'),('b'),('c'),('d'),('e');
-- main part
DECLARE @sql NVARCHAR(MAX);
SELECT @sql = STUFF((SELECT ' ' + FORMATMESSAGE(
'IF OBJECT_ID(''%s'', ''U'') IS NOT NULL
BEGIN
DROP TABLE %s;
PRINT ''%s has been dropped '';
END
', QUOTENAME(tab_name),QUOTENAME(tab_name),QUOTENAME(tab_name))
FROM tab
FOR XML PATH('')), 1, 1, '');
PRINT @sql; -- for debug
EXEC [dbo].[sp_executesql]
@sql;
如果您使用的版本SQL Server
低于2012,则需要FORMATMESSAGE
使用字符串串联进行更改+
。
您可以通过修改模板轻松地使用自定义架构扩展此脚本:
'IF OBJECT_ID(''%s'', ''U'') IS NOT NULL
BEGIN
DROP TABLE %s;
PRINT ''%s has been dropped '';
END
'
输出:
IF OBJECT_ID('[a]', 'U') IS NOT NULL
BEGIN
DROP TABLE [a];
PRINT '[a] has been dropped ';
END
IF OBJECT_ID('[b]', 'U') IS NOT NULL
BEGIN
DROP TABLE [b];
PRINT '[b] has been dropped ';
END
IF OBJECT_ID('[c]', 'U') IS NOT NULL
BEGIN
DROP TABLE [c];
PRINT '[c] has been dropped ';
END
IF OBJECT_ID('[d]', 'U') IS NOT NULL
BEGIN
DROP TABLE [d];
PRINT '[d] has been dropped ';
END
IF OBJECT_ID('[e]', 'U') IS NOT NULL
BEGIN
DROP TABLE [e];
PRINT '[e] has been dropped ';
END
问题内容: 我正在尝试执行这样的mysql查询 它显示这样的错误 我该如何实现? 问题答案: 在查询中动态表名的使用最好与 Prepared Staments一起使用 ,在mysql中也可以使用串联功能 您也可以针对删除查询执行此操作
问题内容: 是否可以通过Jdbc模板在SQL查询中生成任意“ in()”列表: 例: “从t中选择*,其中c在(#)中”,但是’#’可以是仅在运行时才知道的任意值列表。 问题答案: 是的,如果你使用使用命名参数,则可能在Spring中。List参数可以设置为: 在这种情况下,当使用s 替换命名参数时,Spring会根据实际列表的大小在内部使用所需数量的占位符创建SQL查询。
我们有一个IT部门的客户,他们坚持在升级之前以脚本的形式获取数据库更新(他们希望在实现更新之前“阅读”更新)。 作为flyway的狂热用户,它让我想到了一种根据更新从flyway生成脚本并将此脚本发送给IT的方法。如果不存在,此脚本至少需要创建版本表,检查版本并应用所需的更新。它当然是数据库供应商专有的(在我的情况下是Oracle)。 这将允许我们在开发环境中使用flyway自动运行更新,并为测试
请考虑以下代码 它将在屏幕上打印24。 现在假设我在枚举中有更多的值,并且我定义了类特征的所有相应模板特化。 备注: 我必须使用它的情况要复杂得多,自动操作会非常有帮助。 使用switch语句对我来说很重要,因为可以实现速度(速度对我的应用程序至关重要)。 谢谢! null > 在我的实际应用程序中,枚举包含几乎50个不同的值,它将在将来被扩展(希望由其他人扩展)。枚举包含连续值。 类“trait
本文向大家介绍必须会的SQL语句(二) 创建表、修改表结构、删除表,包括了必须会的SQL语句(二) 创建表、修改表结构、删除表的使用技巧和注意事项,需要的朋友参考一下 1.创建数据库表 2.删除表 Drop table 表名 3.修改表结构 --增加列 Alter table 表名 Add 列名 类型 --删除列 Alter table 表名 drop cloumn 列名 --修改列,修改