obtener el numero de parametros de un proc almacenado

07/04/2005 - 16:55 por José Cordero | Informe spam
Hola,
Necesito obtener el número de parametros de un procedimiento almacenado dado
el nombre. Supongo que será haciendo alguna consulta sobre alguna de las
tablas del sistema. ¿Alguien me puede decir como hacerlo?

gracias

Preguntas similare

Leer las respuestas

#6 Alejandro Mesa
07/04/2005 - 17:57 | Informe spam
José Cordero,

Puedes crear una tabla temporal con la definicion de la salida del sp y
crear un cursor para recorrer la vista information_schema.routines. Con la
ayuda de sql dinamico puedes entonces insertar en la tabla temporal (puede
ser permanente si quieres o temporal global) el resultado del sp por cada
procedimineto del cursor. Voy a usar el sp recomendado por Carlos Sacristán,
pues es un sp documentado.

Ejemplo:

use northwind
go

create table #t (
PROCEDURE_QUALIFIER sysname,
PROCEDURE_OWNER sysname,
PROCEDURE_NAME nvarchar(134),
COLUMN_NAME sysname,
COLUMN_TYPE smallint,
DATA_TYPE smallint,
[TYPE_NAME] sysname,
[PRECISION] int,
LENGTH int,
SCALE smallint,
RADIX smallint,
NULLABLE smallint,
REMARKS varchar(254),
COLUMN_DEF nvarchar(4000),
SQL_DATA_TYPE smallint,
SQL_DATETIME_SUB smallint,
CHAR_OCTET_LENGTH int,
ORDINAL_POSITION int,
IS_NULLABLE varchar(254),
SS_DATA_TYPE tinyint
)

declare @rs sysname
declare @rn sysname
declare @sql nvarchar(4000)
declare cursor_procedimientos cursor local fast_forward
for
select
routine_schema,
routine_name
from
information_schema.routines
where
routine_type = 'procedure'
and objectproperty(object_id(routine_schema + '.' + routine_name),
'IsMSShipped') = 0

open cursor_procedimientos

while 1 = 1
begin
fetch next from cursor_procedimientos into @rs, @rn

if @@error != 0 or @@fetch_status != 0 break

set @sql = N'exec sp_sproc_columns ''' + @rn + N''', ''' + @rs + N''''

insert into #t
exec sp_executesql @sql
end

close cursor_procedimientos
deallocate cursor_procedimientos

select
*
from
#t
order by
PROCEDURE_OWNER,
PROCEDURE_NAME,
ORDINAL_POSITION

drop table #t
go


AMB

"José Cordero" wrote:

otra cosa, hay alguna manera de obtener una tabla con todos los parametros de
los proc almacenados.
Necesito en mi programa cargar en memoria una tabla de forma que pueda
consultar por el nombre del procedimiento los parametros que este toma.

gracias

"José Cordero" escribió:

> Hola,
> Necesito obtener el número de parametros de un procedimiento almacenado dado
> el nombre. Supongo que será haciendo alguna consulta sobre alguna de las
> tablas del sistema. ¿Alguien me puede decir como hacerlo?
>
> gracias
Respuesta Responder a este mensaje
#7 José Cordero
07/04/2005 - 17:57 | Informe spam
me hace falta por la arquitectura de mi aplicación, llamo a procedimientos
que reciben 2 o 3 parametros

"Carlos Sacristán" escribió:

Sólo por curiosidad, ¿para qué lo necesitas?. En cualquier caso,
extraído de los BOL:

*********************************************************
sp_sproc_columns
Devuelve la información de columna de un único procedimiento almacenado o
función definida por el usuario en el entorno actual.

Sintaxis
sp_sproc_columns [[@procedure_name =] 'name']
[,[@procedure_owner =] 'owner']
[,[@procedure_qualifier =] 'qualifier']
[,[@column_name =] 'column_name']
[,[@ODBCVer =] 'ODBCVer']

*********************************************************


Un saludo

-
"Sólo sé que no sé nada. " (Sócrates)

"José Cordero" escribió en el mensaje
news:
> Hola,
> Necesito obtener el número de parametros de un procedimiento almacenado
dado
> el nombre. Supongo que será haciendo alguna consulta sobre alguna de las
> tablas del sistema. ¿Alguien me puede decir como hacerlo?
>
> gracias



email Siga el debate Respuesta Responder a este mensaje
Ads by Google
Help Hacer una pregunta AnteriorRespuesta Tengo una respuesta
Search Busqueda sugerida