Hola, Aníbal;

Aníbal Lovaglio wrote:
Gracias Javier,
sí, en realidad eso ya lo había probado, pero con eso lo que no pude hacer es que los resultados queden en alguna variable. Es decir, eso me solucionaba una parte del problema, pero lo que no podía hacer era averiguar en ejecución la cantidad de filas de las tablas como con

"select @q = (select count(*) from @variable)"

y consultas similares, como para elegir algunos campos.

        Podés usar tablas temporales para esto:

DECLARE @q INT;
DECLARE @table VARCHAR(255);

SELECT @table = 'Saraza'; -- Este sería parámetro del procedimiento.

CREATE TABLE #Temp ( q INT );

EXEC('INSERT INTO #Temp (q) (SELECT COUNT(*) FROM ' + @table + ')');

SELECT @q = q FROM #Temp;

DROP TABLE #Temp;

PRINT @q;

        No sé si sea lo más prolijo, pero funciona.
Me parece que no tenés otra manera de meter a @q adentro del scope del EXEC; por lo que usar una tabla como almacenamiento intermedio te sirve.
        Saludos;

                                                Sebastián Santisi
                                                [EMAIL PROTECTED]

O sea, esto era otra cosa que necesitaba hacer en el medio para contar algunas cosas y de esa manera no podía obtener después los valores en variables. Si resuelvo esa parte estoy hecho.

Aníbal


*/Javier Persico <[EMAIL PROTECTED]>/* escribió:

    Te recomiendo que armes una cadena de texto y luego la ejecutes de
    la siguiente forma:
DECLARE @v_cSql as nVARCHAR(4000)
    set @v_cSql = 'select * from' + @variable
    exec sp_executesql @v_cSql
    Saludos!
    El día 19/11/07, *Aníbal Lovaglio* <[EMAIL PROTECTED]
    <mailto:[EMAIL PROTECTED]>> escribió:

        Buenas a todos
        Estoy trabajando con unas bases en SQL Server 2000 y tengo un
        problema que hace algunos días que no puedo resolver. Quiero
        hacer un procedure que reciba como argumentos, los nombres de un
        par de tablas y una columna, y con eso hacer varias operaciones.

        Más puntualmente, las tablas tienen campos de texto que, para
        variar, están rotos, y levanté una tabla de correcciones para
        pasarles a las columnas de texto con alguna sentencia update que
        ya estuve probando y funciona, pero son muchos campos y de
        distintas tablas que tengo que corregir, por lo que tener que
        estar cambiando el código del procedure realmente no es la
        opción más sana, y claramente no sería una buena práctica de
        programación.

        La pregunta concretamente es si alguien sabe como, con una
        variable de un procedure conteniendo u obtenida a partir del
        nombre de la tabla, dentro del procedure puedo hacer un
            "select * from @variable"


        Desde ya muchas gracias
        Aníbal
        ------------------------------------------------------------------------

        Compartí video en la ventana de tus mensajes y también tus fotos
        de Flickr.
        Usá el Nuevo Yahoo! Messenger versión Beta.
        Visitá http://ar.beta.messenger.yahoo.com/

        _______________________________________________
        Lista de correo Programacion.
        [email protected] <mailto:[email protected]>
        http://listas.fi.uba.ar/mailman/listinfo/programacion


    _______________________________________________
    Lista de correo Programacion.
    [email protected]
    http://listas.fi.uba.ar/mailman/listinfo/programacion


------------------------------------------------------------------------

Los referentes más importantes en compra/venta de autos se juntaron:
Demotores y Yahoo!. Ahora comprar o vender tu auto es más fácil.
Visitá http://ar.autos.yahoo.com/


------------------------------------------------------------------------

_______________________________________________
Lista de correo Programacion.
[email protected]
http://listas.fi.uba.ar/mailman/listinfo/programacion



_______________________________________________
Lista de correo Programacion.
[email protected]
http://listas.fi.uba.ar/mailman/listinfo/programacion

Responder a