Por empezar, un stored procedure es una rutina programada en PL/SQL según la versión implementada en el DBMS que uses (en este caso MySQL) y que reside en el servidor. No es dependiente de ningún lenguaje de programación, y no puede contener variables o sentencias de otro lenguaje.
Un SP se carga una sola vez y no se envía nunca más, a menos que se desee modificar su cuerpo, cosa que algunas veces necesitas hacer.
Como sólo admite código SQL, no puedes incluir ese '$ID', porque eso es una cadena de texto constante en el SP. los parámetros que puedan necesitarse se deben incluir cuando se lo llama, y sólo a través de las variables declaradas en el prototipo.
Código MySQL:
Ver originalDELIMITER $$
SELECT 'El valor minimo para acceder es de 11.' valor2
; DELIMITER ;
Para pedir el ID 1, sería:
Detalle: No uses "||" como delimitadores, puede traerte problemas en algunos casos porque esa es la forma del OR binario en SQL. Usa mejor lo que el manual dice: "$$"
Nota: DELIMITER sólo se usa si vas a cargar el Sp en la consola de MySQL, pero no si usas alguna aplicación, como phpMyadmin, Navicat o cosas asi. SI vas a crear programáticamente el SP, simplemente envíalo así:
Tip final: El PL/SQL usado por cada DBMS no es compatible con el de otro DBMS porque no existe un estadar. Por eso no puedes usar el mismo código en SQL Server, Oracle, MySQL, DB2 o Postgre. Cada uno tiene su propia de escribir los SP.