Cita: no se puede declarar, asignar valor y llamar al procedure en el mismo sitio ?
¿Declarar qué?
Los DECLARE son las declaraciones de variables locales dentro de un SP, SF o TRIGGER. No existen fuera de él y mueren al terminar su ejecución.
En ese sentido, lo que dices sólo se puede hacer si lo haces dentro de otro SP.
Lo quer sí puedes declara rson variables de usuario que tienen existencia dentro de una sesión (conexión). Estas no llevan DELCARE y sólo requieren un SELECt que las genere:
Esto genera una variable de usuario en sesion que se denomina @VAR1.
Respecto al
BEGIN/END, sólo llevan uno por cuerpo (hasta lo que yo sé), y un store procedure puede llevar por dentro una enorme cantidad de sentencias. Yo tengo SP que contienen una secuencia de hasta 150 sentencias consecutivas, muchas de las cuales no son SELECTs.