Variable as Table

09/11/2004 - 18:27 por Pablodegerli | Informe spam
Hola amigos, tengo lo siguiente

create table #Pos(Id_Ubicacion int)
Insert into #Pos Exec SpUbicacionSimple

funciona de maravilla, pero si quiero usar tabla temporales en memoria

declare @Pos Table(Id_Ubicacion int)
Insert into @Pos Exec SpUbicacionSimple

Servidor: mensaje 197, nivel 15, estado 1, procedimiento SpUbicacion,
línea 22
No se puede utilizar la instrucción EXECUTE como origen al insertar en
una variable de tabla.

Entonces como puedo insertar el resultado del store en la tabla temporal en
memoria

Como siempre, gracias de antemano
 

Leer las respuestas

#1 Maxi
09/11/2004 - 18:46 | Informe spam
Hola, es que las tablas en memoria se declaran con Table

table
Un tipo especial de datos que puede utilizarse para almacenar un conjunto de
resultados y procesarlo más adelante. Su uso principal es el almacenamiento
temporal de un conjunto de filas, que se van a devolver como el conjunto de
resultados de una función valorada en tabla.

Sintaxis


Nota Utilice DECLARE @local_variable para declarar variables de tipo table.


table_type_definition :: TABLE ( { column_definition | table_constraint } [ ,...n ] )

column_definition :: column_name scalar_data_type
[ COLLATE collation_definition ]
[ [ DEFAULT constant_expression ] | IDENTITY [ ( seed, increment ) ] ]
[ ROWGUIDCOL ]
[ column_constraint ] [ ...n ]

column_constraint :: { [ NULL | NOT NULL ]
| [ PRIMARY KEY | UNIQUE ]
| CHECK ( logical_expression )
}

table_constraint :: { { PRIMARY KEY | UNIQUE } ( column_name [ ,...n ] )
| CHECK ( search_condition )
}

Argumentos
table_type_definition

Es el mismo subconjunto de información que se utiliza para definir una tabla
en CREATE TABLE. La declaración de tabla incluye definiciones de columna,
nombres, tipos de datos y restricciones. Sólo se permiten los tipos de
restricciones PRIMARY KEY, UNIQUE KEY y NULL.

Para obtener más información acerca de la sintaxis, consulte CREATE TABLE,
CREATE FUNCTION y DECLARE @local_variable.

collation_definition

Es la intercalación de la columna que consiste en una configuración local de
Microsoft® Windows™ y un estilo de comparación, una configuración local de
Windows y la notación binaria, o una intercalación de Microsoft SQL Server™.

Observaciones
Se pueden declarar las funciones y variables del tipo table. Las variables
table pueden utilizarse en funciones, procedimientos almacenados y procesos
por lotes.

Utilice variables table en lugar de tablas temporales siempre que sea
posible. Las variables table proporcionan las siguientes ventajas:

a.. Una variable table se comporta como una variable local. Tiene un
alcance bien definido, que es la función, el procedimiento almacenado o el
proceso por lotes en la que está declarada.
Dentro de este alcance, una variable table puede utilizarse como una tabla
normal. Puede aplicarse en cualquier lugar de las instrucciones SELECT,
INSERT, UPDATE y DELETE donde se utilice una tabla o expresión de tabla.
Como excepciones, table no puede utilizarse en las siguientes instrucciones:

INSERT INTO table_variable EXEC stored_procedure

SELECT select_list INTO table_variable statements.

Las variables table se limpian automáticamente al final de la función,
procedimiento almacenado o lote en el que están definidas.

b.. Las variables table que se utilizan en procedimientos almacenados dan
lugar a menos recompilaciones de los procedimientos almacenados que cuando
se utilizan tablas temporales.


c.. Las transacciones con variables table existen sólo mientras dura una
actualización en la variable table. Por tanto, las variables table requieren
menos recursos de registro y bloqueo.
No se permite la operación de asignación entre variables de tablas. Además,
las variables de tabla no se ven afectadas por las operaciones de deshacer
transacciones, debido a que disponen de un alcance limitado y no forman
parte de la base de datos.



Salu2
Maxi
Buenos Aires - Argentina
Desarrollador Microsoft 3 Estrellas .NET
Nunca consideres el estudio como una obligación sino como
una oportunidad para penetrar en el bello y maravillosos
mundo del saber.
- Albert Einstein



"Pablodegerli" escribió en el mensaje
news:%
Hola amigos, tengo lo siguiente

create table #Pos(Id_Ubicacion int)
Insert into #Pos Exec SpUbicacionSimple

funciona de maravilla, pero si quiero usar tabla temporales en memoria

declare @Pos Table(Id_Ubicacion int)
Insert into @Pos Exec SpUbicacionSimple

Servidor: mensaje 197, nivel 15, estado 1, procedimiento SpUbicacion,
línea 22
No se puede utilizar la instrucción EXECUTE como origen al insertar en
una variable de tabla.

Entonces como puedo insertar el resultado del store en la tabla temporal
en
memoria

Como siempre, gracias de antemano







Outgoing mail is certified Virus Free.
Checked by AVG anti-virus system (http://www.grisoft.com).
Version: 6.0.788 / Virus Database: 533 - Release Date: 01/11/2004


begin 666 note.gif
M1TE&.#EA# `+`(#_`(2&`,# P"'Y! $```$`+ `````,``L`0 (:C(\(H'S[
68%R0&ED;M7,'[%S2YW#1)VJ;4P``.P``
`
end

Preguntas similares