Club Delphi  
    FTP   CCD     Buscar   Trucos   Trabajo   Foros

Retroceder   Foros Club Delphi > Principal > SQL
Registrarse FAQ Miembros Calendario Guía de estilo Temas de Hoy

Respuesta
 
Herramientas Buscar en Tema Desplegado
  #1  
Antiguo 16-08-2006
luisgutierrezb luisgutierrezb is offline
Miembro
 
Registrado: oct 2005
Ubicación: México
Posts: 925
Poder: 19
luisgutierrezb Va por buen camino
tabla como retorno de procedimiento MSSQL 2000

Es posible y como se haria, poder regresar una tabla que yo defina desde un procedimiento almacenado?? algo asi como

create procedure procedimiento as table (nom as varchar(10), num as int)

y si se puede, como "llenaria" los campos? de esa tabla
Responder Con Cita
  #2  
Antiguo 24-08-2006
Avatar de olbeup
olbeup olbeup is offline
Miembro
 
Registrado: jul 2005
Ubicación: Santiago de la Ribera (España)
Posts: 685
Poder: 19
olbeup Va camino a la fama
Thumbs up

Mira si te vale el texto que he sacado de internet de las base de datos temporales.

Tablas temporales

Se pueden crear tablas temporales locales y globales. Las tablas temporales locales son visibles sólo en la sesión actual; las tablas temporales globales son visibles para todas las sesiones.
Coloque un prefijo de signo numérico simple (#nombreTabla) en los nombres de las tablas temporales locales y un prefijo de un signo numérico doble (##nombreTabla) en los nombres de las tablas temporales globales.
Las instrucciones SQL hacen referencia a la tabla temporal mediante el valor especificado por nombreTabla en la instrucción CREATE TABLE:
CREATE TABLE #MyTempTable (cola INT PRIMARY KEY)
INSERT INTO #MyTempTable VALUES (1)

Si se crea una tabla temporal local en un procedimiento almacenado o una aplicación que varios usuarios pueden ejecutar al mismo tiempo, SQL Server tiene que ser capaz de distinguir las tablas creadas por los distintos usuarios. SQL Server hace esto al anexar internamente un sufijo numérico a cada nombre de tabla temporal local. El nombre completo de una tabla temporal tal como se almacena en la tabla sysobjects de tempdb consta del nombre de la tabla especificado en la instrucción CREATE TABLE y el sufijo numérico generado por el sistema. Para permitir que se agregue el sufijo, el nombreTabla especificado de un nombre temporal local no puede exceder de 116 caracteres.

Las tablas temporales se quitan automáticamente cuando se salen del alcance, a menos que se ya hayan quitado explícitamente mediante DROP TABLE:
  • Una tabla temporal local creada en un procedimiento almacenado se quita automáticamente cuando se completa el procedimiento almacenado. Cualquiera de los procedimientos almacenados anidados ejecutados por el procedimiento almacenado que creó la tabla puede hacer referencia a la tabla. El proceso que llamó al procedimiento almacenado que creó la tabla no puede hacer referencia a la tabla.
  • Todas las demás tablas temporales se quitan automáticamente al final de la sesión actual.
  • Las tablas temporales globales se quitan automáticamente cuando la sesión que creó la tabla finaliza y todas las tareas restantes han dejado de hacer referencia a ellas. La asociación entre una tarea y una tabla se mantiene sólo durante la vida de una única instrucción Transact-SQL. Esto significa que la tabla temporal global se quita al finalizar la última instrucción Transact-SQL que estuviera haciendo referencia activamente a la tabla cuando finalizó la sesión de creación.
Una tabla temporal local creada en un procedimiento almacenado o desencadenador es distinta de una tabla temporal que tenga el mismo nombre y que se haya creado antes de que se llame al procedimiento almacenado o al desencadenador. Todas las referencias al nombre del procedimiento almacenado o desencadenador se resuelven contra la tabla temporal creada en el procedimiento o en el desencadenador, no contra la versión que existía antes de que se llamara al procedimiento o al desencadenador. Los procedimientos almacenados anidados pueden crear también tablas temporales con el mismo nombre que la tabla temporal creada por el procedimiento almacenado que la llamó. Todas las referencias al nombre de la tabla que se efectúan en el procedimiento almacenado anidado se resuelven en la tabla creada en el procedimiento almacenado, por ejemplo:
CREATE PROCEDURE Test2
AS
CREATE TABLE #t(x INT PRIMARY KEY)
INSERT INTO #t VALUES (2)
SELECT Test2Col = x FROM #t
GO
CREATE PROCEDURE Test1
AS
CREATE TABLE #t(x INT PRIMARY KEY)
INSERT INTO #t VALUES (1)
SELECT Test1Col = x FROM #t
EXEC Test2
GO
CREATE TABLE #t(x INT PRIMARY KEY)
INSERT INTO #t VALUES (99)
GO
EXEC Test1
GO

Los resultados de la ejecución de esta secuencia de comandos son:
(1 row(s) affected)

Test1Col
-----------
1

(1 row(s) affected)

Test2Col
-----------
2

Cuando se crean tablas temporales globales o locales, la sintaxis CREATE TABLE admite la definición de restricciones, excepto las restricciones FOREIGN KEY. Si en una tabla temporal se especifica una restricción FOREIGN KEY, la instrucción devuelve un mensaje de advertencia que indica que la restricción se saltó y que la tabla se ha creado sin las restricciones FOREIGN KEY. En las restricciones FOREIGN KEY no se puede hacer referencia a tablas temporales.
Responder Con Cita
Respuesta



Normas de Publicación
no Puedes crear nuevos temas
no Puedes responder a temas
no Puedes adjuntar archivos
no Puedes editar tus mensajes

El código vB está habilitado
Las caritas están habilitado
Código [IMG] está habilitado
Código HTML está deshabilitado
Saltar a Foro

Temas Similares
Tema Autor Foro Respuestas Último mensaje
Como eliminar el Retorno de Carro al final de un TString gluglu Varios 5 15-05-2006 17:24:03
Problemas con parametro Null en MSSQL Server 2000 pigu SQL 1 27-10-2005 22:18:44
Ayuda, como llamar a un procedimiento desde otro procedimiento? Ariatna Varios 1 01-02-2005 04:05:35
Llamar a un procedimiento como si fuera una tabla Iges Oracle 1 15-12-2004 23:16:20
Bloquear tabla MSSQL server y dbexpres OzzyzzO MS SQL Server 2 26-07-2004 00:20:15


La franja horaria es GMT +2. Ahora son las 01:01:54.


Powered by vBulletin® Version 3.6.8
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
Traducción al castellano por el equipo de moderadores del Club Delphi
Copyright 1996-2007 Club Delphi