سلام و روز خوش در نگاه اول چیزی که دیده میشه تناقض در کد هست:
توابع sqlsrv برای کار با MS SQL هست و نه MySQL،
ولی شما برای سدا زدن stored procedure از CALL استفاده کردین که در MySQL استفاده میشه
در حالی که برای MS SQL باید از EXEC استفاده کنین.
حالا اول باید اینو مشخص کنین که کدوم سناریو هست تا بتونم راهنمایی کنم.
مورد بعدی این هست که هم MS SQL و هم MySQL مستقیما خروجی JSON میدن
و اون لوپ while کلا نیازی بهش نیست.