SQL - AYUDA IF ELSE CON PROCEDIMIENTO

 
Vista:
sin imagen de perfil

AYUDA IF ELSE CON PROCEDIMIENTO

Publicado por Diego (1 intervención) el 20/10/2017 03:55:54
necesito un if que si encuentra el procedimiento lo borre pero en caso contrario pase al else que seria crearlo
e avanzado algo maso menos así pero no doy con un error que me sale al poner el ELSE


IF OBJECT_ID ( 'Test69', 'P' ) IS NOT NULL
DROP PROCEDURE Test69;
print 'El procedimiento ha sido borrado'

ELSE <-
AS BEGIN
CREATE PROCEDURE Test69

create table creada(
codigo int ,
titulo varchar(40),
autor varchar(30),
editorial varchar(20),
precio int)
insert into creada values('1','Harry Potter','Autor','kokito',13)

print 'El procedimiento ha sido creado'
execute Test69
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder
sin imagen de perfil
Val: 806
Bronce
Ha mantenido su posición en SQL (en relación al último mes)
Gráfica de SQL

AYUDA IF ELSE CON PROCEDIMIENTO

Publicado por leonardo_josue (1173 intervenciones) el 20/10/2017 16:13:24
Hola Diego:

No nos dices con qué BD's estás trabajando, por lo tanto es algo complicado poder saber el error, pues cada DBMS tiene una sintaxis diferente. Tampoco nos dices el código de error que estás obteniendo, esto es muy importante para darnos una idea de dónde puede esta el problema.

Ahora bien, veo varias cosas mal en tu procedimiento, (utilizando una sintaxis de SQL estandar)

1. Algunas instrucciones las terminas con punto y coma (;) y otras no... por lo general, todas las sentencias que ejecutan alguna acción deben ir acompañadas de un (;)

2. Por lo general, cuando utilizas una sentencia BEGIN debe ir acompañada de una sentencia END, y esto sirve para ubicar un bloque de sentencias que se deben ejecutar en su conjunto.

3. Algunos DBMS pueden obligarte a poner BEGIN-END si quieres ejecutar más de una sentencia en un IF-ELSE... y si se omite entonces se ejecuta sólo una sentencia:

EJEMPLO:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
IF (condicion) THEN
BEGIN
  SENTENCIA 1;
  SENTENCIA 2;
END
ELSE
BEGIN
  SENTENCIA 3;
  SENTENCIA 4
END;
 
IF (condicion) THEN
  SENTENCIA1;
ELSE
  SENTENCIA 2;

Pero si haces algo como esto:

1
2
3
4
5
IF (sentencia) THEN
  SENTENCIA 1;
  SENTENCIA 2:
ELSE
  SENTENCIA 1;

Esto sería un error, ya que el IF sólo ejecuta una sentencia, y al haber DOS, la segunda se ejecutaría pero NO COMO PARTE DEL IF... por lo tanto el ELSE no tiene razón de ser. En este caso, tendrías que hacer algo así:

1
2
3
4
5
6
7
IF (sentencia) THEN
BEGIN
  SENTENCIA 1;
  SENTENCIA 2:
END
ELSE
  SENTENCIA 1;

Se entiende? Insisto que estoy tratando de adivinar lo que está mal en tu SP, pero dependerá mucho de con qué BD's estés trabajando para darte una respuesta más puntual.

Saludos
Leo.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar