Principales respuestas
USO DE VARIABLES EN SQL SERVER 2012

Pregunta
-
Buen dia a todos, espero me pueda apoyar tengo la siguiente pregunta ,
de que forma puedo usar una variable o parametro como lo quieran ver en sql en la cual pueda almacenar varios valores y poder utilizar esa variable dentro de un WHERE por ejemplo algo asi:
DECLARE @variable INT
set @variable = 4,5,7,9
select *
from Tabla where IDnumero in (@variable)solo es un ejemplo , lo que necesito es saber si puedo hacer algo asi ,porque necesito hacer un SP en el cual le quiero mandar varios valores y en base a esos valores sea lo que me filtre en un WHERE
espero haberme explicado bien , y alguien pueda orientarme
Saludos
Respuestas
-
Puedes implementar un parámetro con valores de tabla. Fíjate en el siguiente enlace, es bastante descriptivo:
Using Table Valued Parameters (TVP)
Espero que la información proporcionada te haya sido de utilidad, quedo atento a tus comentarios.- Propuesto como respuesta HunchbackMVP jueves, 4 de agosto de 2016 13:00
- Marcado como respuesta Laura CeglzModerator jueves, 4 de agosto de 2016 21:28
Todas las respuestas
-
Hola:
Claro puede crear una variable con diferentes propósitos:
-
Como contadores, para contar el número de veces que se realiza un bucle o controlar cuántas veces debe ejecutarse.
-
Para contener un valor de datos que desea probar mediante una instrucción de control de flujo.
-
Para guardar el valor de un dato que se va a devolver en un código de retorno de un procedimiento almacenado o un valor devuelto de una función.
Declara una variable
DECLARE @MiVariable int;
Inicializa una variable
SET @MiVariable = 0;
Luego puedes incrementar el valor
SET @MiVariable = @MiVariable + 1;
Esta instrucción declara tres variables locales con valores inicializados a NULL
DECLARE @PrimerNombre nvarchar(30), @SegundoNombre nvarchar(20), @EstadoProvincia nchar(2);
USE AdventureWorks2008R2; GO DECLARE @MiVariable int; SET @MiVariable = 1; -- Termina el batch usando la palabra clave GO. GO SELECT BusinessEntityID, NationalIDNumber, JobTitle FROM HumanResources.Employee WHERE BusinessEntityID = @MiVariable;
Es una de tantas formas como puedes utilizar las variables.
Si te ha servido vota y marca como respuesta útil.
Saludos,
Miguel Torres
- Editado Miguel Torres C miércoles, 3 de agosto de 2016 15:39
-
-
Puedes implementar un parámetro con valores de tabla. Fíjate en el siguiente enlace, es bastante descriptivo:
Using Table Valued Parameters (TVP)
Espero que la información proporcionada te haya sido de utilidad, quedo atento a tus comentarios.- Propuesto como respuesta HunchbackMVP jueves, 4 de agosto de 2016 13:00
- Marcado como respuesta Laura CeglzModerator jueves, 4 de agosto de 2016 21:28
-
gracias a todos por su apoyo : encontre algo que es una variable tipo tabla como lo menciona william este es el ejemplo que encontre
declare @listOfIDs table (id int);
insert @listOfIDs(id) values (114),(61),(140),(123),(69),(96);select * from tabla where idnumero in (select *
from @listOfIDs ) asi es como deseaba poder hacerlo aunque yo pense que se podia de otra forma ,
el problema ahora es como enviar esos valores desde un programa externo digamos con c#
-
Hola
Pues consultar el siguiente artículo, allí están las instrucciones tanto par C# como para Visual Basic.
https://msdn.microsoft.com/es-es/library/ms233812.aspx?cs-save-lang=1&cs-lang=csharp#code-snippet-1
Saludos,
Miguel Torres
- Editado Miguel Torres C miércoles, 3 de agosto de 2016 16:07
-
Debes definir una estructura que podría ser una lista, un objeto de tipo DataTable, etc., fíjate en el siguiente ejemplo:
DataTable dt = dtOriginal.GetChanges(DataRowState.Added); SqlCommand cmd = new SqlCommand("MyStoredProcedure", cn); cmd.CommandType = CommandType.StoredProcedure; SqlParameter param = cmd.Parameters.AddWithValue("@param", dt); param.SqlDbType = SqlDbType.Structured; cmd.ExecuteNonQuery();
Espero que la información proporcionada te haya sido de utilidad, quedo atento a tus comentarios. -
encontre otra manera de poder almacenar la informacion , el problema aqui es que tendria que buscar una forma de convertir una cadena de texto a valores int separados por coma , algo asi
declare @numero varchar(100)
set @numero = '1,2,3,4,5,6'
select *
from tabla where idnumero in (@numero)
el problema aqui es como hacer que esto '1,2,3,4,5,6' se convierta en esto 1,2,3,4,5,6
para que el query interprete en el where los valores como tipo INT y que estan separados por coma
alguno tendria una idea ?
-
Olvida esa forma, no es óptima a menos que cuentes con un motor SQL SERVER 2016 y puedas hacer uso de la función STRING_SPLIT, caso contrario sólo te traerá complicaciones. La manera más óptima es mediante parámetros con valores de tabla, te recomiendo que insistas en la revisión de ese punto y te animes a su implementación.
Espero que la información proporcionada te haya sido de utilidad, quedo atento a tus comentarios. -