sqlserver快速查找所有存储过程中是否包含某字符

上周试过这个。

SQL Server 是:
sql 选择 ROUTINE_NAME、ROUTINE_DEFINITION INFORMATION_SCHEMA.ROUTINES 其中 ROUTINE_DEFINITION 等于 '%text%' AND ROUTINE_TYPE = '过程'
Oracle 是:
sql 选择名称、类型、文本 在 USER_PLSQL_VIEWS 中 存在“%text%”等文本的地方 AND 类型 = '过程'
数据库类型不同。

MySQL的编写方式有问题。

算了。

sqlserver 存储过程 表不存在 继续生成

哦,对了,2 02 2 年我们的项目在武汉,就遇到了这种事情。
表有时会突然消失,例如临时表,或者其他程序删除它们。
直接崩溃了,用户停止工作。
我们想到了一个办法。

SQLServer非常好。
即使表消失了,存储过程仍然可以完成。
主要取决于OBJECT_ID函数。
如果将表名传递给此函数,它将返回一个 ID。
如果表不存在,则返回NULL。
多么简单啊。

只需在存储过程中添加一条 IF 语句即可判断表达式 OBJECT_ID('tablename','U') 的返回值是否为 NULL。
只需指定具体的表名称,例如“订单”或“客户信息”。
“U”表示用户表。

如果返回NULL,则表不存在。
你现在必须做什么?您可以使用 RAISERROR 发送错误,但指定它不应中止执行。
它是 RAISERROR('表不存在',1 0,1 )。
1 0 是严重性,1 是状态代码。
这样用户知道表已经消失,但进程可以继续运行。

如果OBJECT_ID不返回NULL,则表示该表存在。
然后继续执行查询或操作。
例如,SELECT FROM 订单;。

让我给你写一个具体的例子。
我敲击键盘。

sql 创建过程检查表存在 AS 开始 IF OBJECT_ID('YourTableName','U') IS NULL RAISERROR('提示:表YourTablename不存在,进程继续运行',1 0,1 ); 其他 从您的表名中选择; 结束;
你看,这只是一个简单的IF。
创建完这个存储过程后,可以直接EXEC CheckTableExists;在另一个查询窗口中。
如果该表存在,则正常运行。
如果表不存在,会报错但不会中止。
我们当时经常使用这种方法,特别是在木材领域。
有时表结构发生了变化,但旧的存储过程仍然可以运行,无需直接追加。

非常方便。