2011-01-02 37 views
20

Digamos que tengo un procedimiento almacenado que tiene un bloque IF simple. Si la verificación realizada cumple con los criterios, entonces quiero detener el procedimiento para su posterior ejecución.¿Cómo detener la ejecución de un procedimiento almacenado utilizando SQL Server?

¿Cuál es la mejor manera de hacerlo?

Aquí está el código:

IF EXISTS (<Preform your Check>) 
BEGIN 
    // NEED TO STOP STORED PROCEDURE EXECUTION 
END 
ELSE 
BEGIN 
    INSERT()... 
END 

Gracias por cualquier ayuda con esto!

Respuesta

45

simplemente hacer una llamada a la devolución:

IF EXISTS (<some condition>) 
BEGIN 
    // NEED TO STOP STORED PROCEDURE EXECUTION 
    RETURN 
END 

Esto devolverá el control al llamador inmediato - se salta todo lo demás en el proc.

+0

Muchas gracias por la sugerencia. –

+0

¿qué hacer en caso de que sea una transacción? dirá que "Recuento de transacciones después de EJECUTAR indica un número incorrecto de declaraciones COMIENZO y COMPROMISO. Recuento previo = 0, recuento actual = 1" – Muflix

0

Simplemente podría poner una etiqueta de salto al final del cuerpo SP, y emitir un GOTO en la primera declaración IF. De forma alternativa, puede extender el primer bloque BEGIN ... END para contener el resto completo del cuerpo del SP e invertir la condición (IF NOT EXISTS...).

Cuestiones relacionadas