none
Tipo tabla definido por el usuario pasado a store procedure. RRS feed

  • Pregunta

  • Hola a todos

    Usando tipos de datos definidos por el usuario y pasándolo como parámetro a un procedimiento almacenado por un error sintáctico mío he obtenido un resultado inesperado pero sin error. Quiero compartirlo con vosotros y espero que alguien tenga la respuesta. Paso a poner el ejemplo y comentarlo

    CREATE procedure PruebaTabla
    (@t1 tabla readonly )
    as
    begin
    select * from t1  --mirar, aquí que está el error mío al escribir
    end
    GO

    CREATE TYPE [dbo].[tabla] AS TABLE(
     [c1] [int] NULL,
     [c2] [int] NULL
    )
    GO

    declare @a tabla
    insert into @a select * from
    (
    select 1 as c1,1 as c2
    union select 2 as c1,2 as c2
    ) as t
    select * from @a

    c1 c2
    1 1
    2 2

    cuando ejecuto EXEC dbo.PruebaTabla @a

    c1 c2 c3
    1 1 1
    1 1 1

    este es el resultado que obtengo, por supuesto no era el esperado porque en la definición del SP a la hora de teclear me falto el @ de la variable, sin embargo no me devuelve error. Si cambio la SP y agrego @ en la variable obtengo el resultado esperado.

    c1 c2
    1 1
    2 2

    Saludos.

     

    miércoles, 3 de agosto de 2016 10:22

Respuestas

  • Perdonad. Me respondo a mi mismo, existe una tabla llamada T parece que de prueba en la BBDDs y no tenía conocimiento de su existencia, doy así por terminado este tema. Gracias por vuestra paciencia.
    • Marcado como respuesta Raimundo Ferrer miércoles, 3 de agosto de 2016 13:59
    miércoles, 3 de agosto de 2016 13:59
  • Hola,

    Gracias por tu respuesta, en efecto existía una tabla llamada T parece que de prueba y no lo sabía, ya lo había comentado en un mensaje anterior. Saludos.

    martes, 9 de agosto de 2016 12:03

Todas las respuestas

  • Hola Raimundo,

    Ese código que escribes no tiene sintaxis de TSQL, no sé exactamente que es lo quieres, intenta postear algo mas legible y te ayudamos encantados.


    Gracias.

    miércoles, 3 de agosto de 2016 12:07
  • Perdonad. Me respondo a mi mismo, existe una tabla llamada T parece que de prueba en la BBDDs y no tenía conocimiento de su existencia, doy así por terminado este tema. Gracias por vuestra paciencia.
    • Marcado como respuesta Raimundo Ferrer miércoles, 3 de agosto de 2016 13:59
    miércoles, 3 de agosto de 2016 13:59
  • Raimundo Ferrer,

    Es de esperar que al ejecutar el procedimiento almacenado obtengas el error "El nombre de objeto 't1' no es válido." porque el objeto t1 "no existe", y marco entre comillas que no existe porque en el resultado muestras una tercera columna [c3] que nunca la definiste en la estructura TYPE, tengo mis dudas, ¿no será que el objeto t1 si existe y se trata de un objeto table o view?. Para salir de dudas recree tu caso en un motor SQL Server 2008 R2 / 2012 / 2014 y en todos obtuve el error "El nombre de objeto 't1' no es válido." porque el objeto t1 "no existe".

    Esperamos tus comentarios.


    Espero que la información proporcionada te haya sido de utilidad, quedo atento a tus comentarios.
    miércoles, 3 de agosto de 2016 14:06
  • Hola,

    Gracias por tu respuesta, en efecto existía una tabla llamada T parece que de prueba y no lo sabía, ya lo había comentado en un mensaje anterior. Saludos.

    martes, 9 de agosto de 2016 12:03