none
Error en procedimiento almacenado RRS feed

  • Pregunta

  • Hola a todos:

    Estoy liada con la creación de un store procedure al que preciso asignarle un parámetro de tipo tabla.

    Lo que he hecho hasta ahora es crear en el management studio el tipo, para ello he ido a "Tipos" y a "Tipos creados por el usuario" y lo he creado así:

    ----------------Creacion del tipo--------------
    IF (SELECT COUNT(*) FROM sys.table_types
    WHERE name = 'TSPCodigos' AND schema_id = 1) = 0
      CREATE TYPE dbo.TSPCodigos AS TABLE(Codigo text)
    GO

    Ahora cuando quiero crear el store procedure hago lo siguiente y me da error en el parámetro TSPCodigos;

    Se produjo la excepción System.Data.SqlClient.SqlException.
      HResult=0x80131904
      Mensaje = Sintaxis incorrecta cerca de 'TSPCodigos'.
    Sintaxis incorrecta cerca de la palabra clave 'FROM'.
     

     sql = "CREATE PROCEDURE dbo.procFormulasBalance5dig " &
                        "@empresa Nvarchar(3), @planconta Nvarchar(12), @Items Nvarchar(500) TSPCodigos READONLY AS " &
                        "SELECT Ejer_01, Ejer_02, Ejer_03, Ejer_04, Ejer_05, Ejer_06, Ejer_07, Ejer_08, Ejer_09, Ejer_10, Ejer_11, Ejer_12 " &
                        "FROM BALANCES WHERE IdEmpresa = @empresa AND PlanConta = @planconta AND Cód_GC FROM @Items "

    Esto le estoy haciendo porque tengo a veces muchos "Cód_GC" y trato de aliviar los tiempos de respuesta del servidor y aparte porque en la parte de vn.net o sea del código, se hace el método muchas veces larguísimo y con ello trato de pasar de una tacada todos los código del método. Hasta ahora lo tengo así, os pongo uno corto con 5 códigos:

                sql = "CREATE PROCEDURE dbo.procFormulasBalance5dig  " &
                        "@empresa Nvarchar(3), @planconta Nvarchar(12), @codigo1 Nvarchar(7), @codigo2 Nvarchar(7), @codigo3 Nvarchar(7),  " &
                        "@codigo4 Nvarchar(7), @codigo5 Nvarchar(7) " &
                        "AS " &
                        "SELECT Ejer_01, Ejer_02, Ejer_03, Ejer_04, Ejer_05, Ejer_06, Ejer_07, Ejer_08, Ejer_09, Ejer_10, Ejer_11, Ejer_12  " &
                        "FROM Balances WHERE IdEmpresa = @empresa AND PlanConta = @planconta AND Cód_GC IN (@codigo1, @codigo2, @codigo3, @codigo4, @codigo5)"

    Pero claro, cuando hablamos de 140 códigos el proceso es largo (muchas líneas) y a ver si con ello, puedo utilizar en pocas líneas el tema de los parámetros, ya que ahora es un parámetro por código y por ejemplo creo que podría quedar así ('002',234',325','344','589').

    Un cordial saludo a todos.

    Gemma


    viernes, 4 de agosto de 2017 17:43

Respuestas

Todas las respuestas