When pymssql.output(int) is passed to callproc and stored procedure returns null for that param, we get random integer instead of None. You can't tell if procedure returned valid integer or null.
Example Procedure:
CREATE PROCEDURE [dbo].[test]
@io_cd_erro int output
as begin
set @io_cd_erro = null
end
Call in Python:
from pymssql import _mssql
conn = _mssql.connect(server="XX.XX.XX.XX", user="xx", password="xxxxxxx", database="xxxxx", port=1433, appname='TEST')
proc = conn.init_procedure("dbo.test")
proc.bind(0, _mssql.SQLINTN, "@io_cd_erro", output=True, null=True)
proc.execute()
print(proc.parameters["@io_cd_erro"])