有时我需要在数据库中查找一些字符串,通常它只是主机名或 IP 地址。
是否有任何脚本可以在我有权访问的所有 Sybase db 对象(或至少在所有表中)中找到字符串。
sysobjects + cursor + EXECUTE 上的查询有效。有点像。
sp__map_object 'SELECT * FROM %O where name like "bar%"', 'foo_%'
代码中有很多错误/问题/担忧,我不愿意发布它,但我对 Sybase 的同胞有一定的同情。
Rob Verschoor 在http://www.sypron.nl/new_ssp_dwn.html上有一堆不错的存储过程
pjjH
289:1> ? sp__map_object (受影响的 1 行) /* * * 运行时要小心!!! * * 请参阅 sp__map_db.sql 中的严重警告列表 * * 对每个对象的存储过程运行给定的命令 * 匹配 @object_pat 并将 %O 的第一个实例替换为 * 姓名。 * * 只需在 Perl 中执行此操作。或者重构 sql 使其适用于一些理智的人 * 用户、登录名、数据库和对象的交叉产品。 * *保罗·哈灵顿 * */ 创建过程 sp__map_object @sql VARCHAR(255) = 'sp__help', @objpat VARCHAR(32) = NULL, @type VARCHAR(2) = 'U', @do_it INT = 1, @verbose INT = 0 作为 开始 设置无计数 声明 object_cursor CURSOR 为了 选择不同的名称 来自系统对象 像@objpat这样的名字 和类型像@type 声明 @munged_sql VARCHAR(255) 声明@object_name varchar(64) 打开 object_cursor FETCH object_cursor INTO @object_name 而@@sqlstatus = 0 开始 IF CHARINDEX('%O', @sql) 0 SELECT @munged_sql = SUBSTRING(@sql, 1, CHARINDEX('%O', @sql) - 1) + @object_name + SUBSTRING(@sql, CHARINDEX('%O', @sql) + 2, 255) 别的 选择 @munged_sql = @sql 如果(@do_it = 0 或 @verbose = 1) 开始 声明@msg varchar(255) 选择@msg = @munged_sql 选择@msg 结尾 如果@do_it = 1 执行(@munged_sql) FETCH object_cursor INTO @object_name 结尾 关闭 object_cursor DEALLOCATE CURSOR object_cursor 设置无计数 结尾 去
没有我知道的本地人。您也许可以滚动一个查询系统表以获取对象列表的过程,然后让游标遍历并根据给定的搜索条件查询这些对象。