update stored procedimientos procedimiento para modificar insertar eliminar desde datos almacenados almacenado actualizar stored-procedures sybase-ase

stored-procedures - procedimientos - stored procedure para actualizar datos



Encuentre el procedimiento almacenado de Sybase en db dado una cadena de texto que aparece en el proceso (5)

¿Cómo encuentro un procedimiento almacenado en una base de datos de Sybase dada una cadena de texto que aparece en algún lugar del proceso? Quiero ver si cualquier otro proceso en el db tiene una lógica similar a la que estoy viendo, y creo que tengo una cadena de búsqueda bastante única (literal)

Editar:

Estoy usando la versión 11.2 de Sybase


En SQL Anywhere y Sybase IQ:

select * from SYS.SYSPROCEDURE where proc_defn like ''%whatever%''

No estoy tan familiarizado con ASE, pero de acuerdo con los documentos (disponibles en sybooks.sybase.com), es algo así como:

select * from syscomments where texttype = 0 and text like ''%whatever%''


Dos variaciones en la respuesta de Graeme (por lo tanto, esto tampoco funcionará en 11.2):

Esto también enumera el nombre del sproc, pero devolverá varias filas para cada sproc si el texto aparece varias veces:

select object_name(id),* from syscomments where texttype = 0 and text like ''%whatever%''

Esto enumera cada sproc solo una vez:

select distinct object_name(id) from syscomments where texttype = 0 and text like ''%whatever%''


Recuerde que esa columna de texto en syscomments es varchar (255), por lo que un procedimiento grande puede constar de muchas líneas en syscomments, por lo tanto, las selecciones anteriores no encontrarán el nombre del procedimiento si se ha dividido en 2 filas de texto en syscomments.

Sugiero la siguiente selección, que manejará el caso anterior:

declare @text varchar(100) select @text = "%whatever%" select distinct o.name object from sysobjects o, syscomments c where o.id=c.id and o.type=''P'' and (c.text like @text or exists( select 1 from syscomments c2 where c.id=c2.id and c.colid+1=c2.colid and right(c.text,100)+ substring(c2.text, 1, 100) like @text ) ) order by 1

- felicitaciones por esto va al creador de ASEisql


select * from sysobjects where id in ( select distinct (id) from syscomments where text like ''%SearchTerm%'') and xtype = ''P''


select distinct object_name(syscomments.id) ''SearchText'', syscomments.id from syscomments ,sysobjects where texttype = 0 and text like ''%SearchText%'' and syscomments.id=sysobjects.id and sysobjects.type=''P''