Crear una vista en un sp

02/08/2004 - 14:35 por Xavi | Informe spam
Hola,

Ejecuto el siguiente código y no funciona

CREATE PROCEDURE dbo.prueba
AS
CREATE VIEW vista AS
SELECT a = 0

En cambio, el código

CREATE VIEW vista AS
SELECT a = 0

sí que funciona. ¿Acaso no es posible crear una vista en un stored
procedure?

Gracias


Xavi

Preguntas similare

Leer las respuestas

#1 Maxi
02/08/2004 - 14:41 | Informe spam
Hola, te copio lo que dice el manual:

De entre las reglas para programar procedimientos almacenados, cabe citar
las siguientes:

a.. La propia definición CREATE PROCEDURE puede incluir cualquier número y
tipo de instrucciones SQL, excepto las siguientes instrucciones CREATE, que
no pueden ser utilizadas nunca dentro de un procedimiento almacenado: CREATE
DEFAULT CREATE TRIGGER
CREATE PROCEDURE CREATE VIEW
CREATE RULE



Suerte

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



"Xavi" escribió en el mensaje
news:%23h4$
Hola,

Ejecuto el siguiente código y no funciona

CREATE PROCEDURE dbo.prueba
AS
CREATE VIEW vista AS
SELECT a = 0

En cambio, el código

CREATE VIEW vista AS
SELECT a = 0

sí que funciona. ¿Acaso no es posible crear una vista en un stored
procedure?

Gracias


Xavi







Outgoing mail is certified Virus Free.
Checked by AVG anti-virus system (http://www.grisoft.com).
Version: 6.0.732 / Virus Database: 486 - Release Date: 29/07/2004
Respuesta Responder a este mensaje
#2 Xavi
02/08/2004 - 14:45 | Informe spam
Gracias Maxi


"Maxi" escribió en el mensaje
news:
Hola, te copio lo que dice el manual:

De entre las reglas para programar procedimientos almacenados, cabe citar
las siguientes:

a.. La propia definición CREATE PROCEDURE puede incluir cualquier número


y
tipo de instrucciones SQL, excepto las siguientes instrucciones CREATE,


que
no pueden ser utilizadas nunca dentro de un procedimiento almacenado:


CREATE
DEFAULT CREATE TRIGGER
CREATE PROCEDURE CREATE VIEW
CREATE RULE



Suerte

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



"Xavi" escribió en el mensaje
news:%23h4$
> Hola,
>
> Ejecuto el siguiente código y no funciona
>
> CREATE PROCEDURE dbo.prueba
> AS
> CREATE VIEW vista AS
> SELECT a = 0
>
> En cambio, el código
>
> CREATE VIEW vista AS
> SELECT a = 0
>
> sí que funciona. ¿Acaso no es posible crear una vista en un stored
> procedure?
>
> Gracias
>
>
> Xavi
>
>



Outgoing mail is certified Virus Free.
Checked by AVG anti-virus system (http://www.grisoft.com).
Version: 6.0.732 / Virus Database: 486 - Release Date: 29/07/2004


Respuesta Responder a este mensaje
#3 Carlos Sacristan
02/08/2004 - 14:47 | Informe spam
Tú lo has dicho: no es posible crear una vista desde un procedimiento
almacenado, pero si lo necesitas, puedes utilizar SQL dinámico, aunque no te
lo recomiendo (ni crear una vista desde un procedimiento ni usar SQL
dinámico)


Un saludo

-
"Sólo sé que no sé nada. " (Sócrates)

Por favor, responder únicamente al foro
Se agradece la inclusión de sentencias DDL


"Xavi" escribió en el mensaje
news:#h4$
Hola,

Ejecuto el siguiente código y no funciona

CREATE PROCEDURE dbo.prueba
AS
CREATE VIEW vista AS
SELECT a = 0

En cambio, el código

CREATE VIEW vista AS
SELECT a = 0

sí que funciona. ¿Acaso no es posible crear una vista en un stored
procedure?

Gracias


Xavi


Respuesta Responder a este mensaje
#4 Xavi
02/08/2004 - 15:35 | Informe spam
Hey! Pues con SQL dinámico sí es posible. Pues no lo dudo ni un segundo. No
sé por qué dices que no recomiendas ni crear una vista en un sp ni usar SQL
dinámico.

Respecto a lo primero, se trata de una vista que debe existir siempre y que,
en caso de no existir, se crea automáticamente. Es justo que el sp la cree
si no existe.

Respecto a SQL dinámico, yo siempre había sido muy reacio a usarlo por la
creencia de su bajo rendimiento. Después de leer algunos articulos y hacer
algunas pruebas, he llegado a la conclusión de que en según que casos, valo
muchísimo la pena. El argumento en el que se basan es en que según como sea
la sp, dificilmente se aprovechará el plan de ejecución ya trazado e
igualmente se tendrá que recompilar. Estoy hablando de sp con múltiples
parámetros con posibilidad a ser opcionales.

Hay una referencia aquí. Vosotros que sois más entendidos que yo seguramente
podráis dar un punto de vista mucho más válido.

http://www.hayes.ch/sql/sql_dinamico.html

Agradezco cualquier comentario.


Xavi




"Carlos Sacristan" <csacristan ARROBA mvps.org> escribió en el mensaje
news:%
Tú lo has dicho: no es posible crear una vista desde un procedimiento
almacenado, pero si lo necesitas, puedes utilizar SQL dinámico, aunque no


te
lo recomiendo (ni crear una vista desde un procedimiento ni usar SQL
dinámico)


Un saludo

-
"Sólo sé que no sé nada. " (Sócrates)

Por favor, responder únicamente al foro
Se agradece la inclusión de sentencias DDL


"Xavi" escribió en el mensaje
news:#h4$
> Hola,
>
> Ejecuto el siguiente código y no funciona
>
> CREATE PROCEDURE dbo.prueba
> AS
> CREATE VIEW vista AS
> SELECT a = 0
>
> En cambio, el código
>
> CREATE VIEW vista AS
> SELECT a = 0
>
> sí que funciona. ¿Acaso no es posible crear una vista en un stored
> procedure?
>
> Gracias
>
>
> Xavi
>
>


Respuesta Responder a este mensaje
#5 Gustavo Larriera [MVP SQL]
02/08/2004 - 16:06 | Informe spam
/* Lo que voy a opinar es estrictamente filosófico */

Creo que todo lo que sea esquema de la base de datos (tablas, vistas,
indices, etc.) es por naturaleza estático, por lo tanto definible en tiempo
de diseño y no en ejecución. Por eso opino que objetos como una vista
debería estar creado de antemano.

En tu caso mencionas que "se trata de una vista que debe existir siempre ".
Eso es mérito suficiente para que la crees al definir el esquema de tu base
de datos.

Observa que NO ES NATURAL planearlo de esta manera: Que cada sproc verifique
si los objetos que precisa están disponibles y si no lo están, que el sproc
se encargue de crearlos. No es esta la forma habitual de programar en una
base de datos.

Muy cordiales saludos
gux

Gustavo Larriera
Uruguay LatAm
http://sqljunkies.com/weblog/gux/
Este mensaje se proporciona "COMO ESTA" sin garantias y no otorga ningun
derecho / This posting is provided "AS IS" with no warranties, and confers
no rights.
"Xavi" wrote in message
news:
Hey! Pues con SQL dinámico sí es posible. Pues no lo dudo ni un segundo.


No
sé por qué dices que no recomiendas ni crear una vista en un sp ni usar


SQL
dinámico.

Respecto a lo primero, se trata de una vista que debe existir siempre y


que,
en caso de no existir, se crea automáticamente. Es justo que el sp la cree
si no existe.

Respecto a SQL dinámico, yo siempre había sido muy reacio a usarlo por la
creencia de su bajo rendimiento. Después de leer algunos articulos y hacer
algunas pruebas, he llegado a la conclusión de que en según que casos,


valo
muchísimo la pena. El argumento en el que se basan es en que según como


sea
la sp, dificilmente se aprovechará el plan de ejecución ya trazado e
igualmente se tendrá que recompilar. Estoy hablando de sp con múltiples
parámetros con posibilidad a ser opcionales.

Hay una referencia aquí. Vosotros que sois más entendidos que yo


seguramente
podráis dar un punto de vista mucho más válido.

http://www.hayes.ch/sql/sql_dinamico.html

Agradezco cualquier comentario.


Xavi




"Carlos Sacristan" <csacristan ARROBA mvps.org> escribió en el mensaje
news:%
> Tú lo has dicho: no es posible crear una vista desde un


procedimiento
> almacenado, pero si lo necesitas, puedes utilizar SQL dinámico, aunque


no
te
> lo recomiendo (ni crear una vista desde un procedimiento ni usar SQL
> dinámico)
>
>
> Un saludo
>
> -
> "Sólo sé que no sé nada. " (Sócrates)
>
> Por favor, responder únicamente al foro
> Se agradece la inclusión de sentencias DDL
>
>
> "Xavi" escribió en el mensaje
> news:#h4$
> > Hola,
> >
> > Ejecuto el siguiente código y no funciona
> >
> > CREATE PROCEDURE dbo.prueba
> > AS
> > CREATE VIEW vista AS
> > SELECT a = 0
> >
> > En cambio, el código
> >
> > CREATE VIEW vista AS
> > SELECT a = 0
> >
> > sí que funciona. ¿Acaso no es posible crear una vista en un stored
> > procedure?
> >
> > Gracias
> >
> >
> > Xavi
> >
> >
>
>


Respuesta Responder a este mensaje
Ads by Google
Help Hacer una preguntaSiguiente Respuesta Tengo una respuesta
Search Busqueda sugerida