¿Cómo ejecutar un procedimiento almacenado MSSQL con ADOdb PHP Library?

He seguido las instrucciones en la documentación de ADOdb y estoy tratando de ejecutar un procedimiento almacenado en una base de datos de SQL Server 2008 como esta:

$stmt = $db->PrepareSP('usp_insert_aweber_list'); $db->InParameter($stmt,$id,'List_ID',false,SQLINT4); $db->InParameter($stmt,$name,'Name',255,SQLVARCHAR); $db->InParameter($stmt,$campaigns_collection_link,'Campaign_Collections_Link',255,SQLVARCHAR); $db->InParameter($stmt,$custom_fields_collection_link,'Custom_Fields_Collection_Link',255,SQLVARCHAR); $db->InParameter($stmt,$http_etag,'HTTP_Etag',255,SQLVARCHAR); $db->InParameter($stmt,$resource_type_link,'Resource_Type_Link',255,SQLVARCHAR); $db->InParameter($stmt,$self_link,'Self_Link',255,SQLVARCHAR); $db->InParameter($stmt,$subscribers_collection_link,'Subscribers_Collection_Link',255,SQLVARCHAR); $db->InParameter($stmt,$total_subscribers,'Total_Subscribers',false,SQLINT4); $db->InParameter($stmt,$total_subscribed_subscribers,'Total_Subscribed_Subscribers',false,SQLINT4); $db->InParameter($stmt,$total_subscribers_subscribed_today,'Total_Subscribers_Subscribed_Today',false,SQLINT4); $db->InParameter($stmt,$total_subscribers_subscribed_yesterday,'Total_Subscribers_Subscribed_Yesterday',false,SQLINT4); $db->InParameter($stmt,$total_unconfirmed_subscribers,'Total_Unconfirmed_Subscribers',false,SQLINT4); $db->InParameter($stmt,$total_unsubscribed_subscribers,'Total_Unsubscribed_Subscribers',false,SQLINT4); $db->InParameter($stmt,$web_form_split_tests_collection_link,'Web_Form_Split_Tests_Collection_Link',255,SQLVARCHAR); $db->InParameter($stmt,$web_forms_collection_link,'Web_Forms_Collection_Link',255,SQLVARCHAR); $rs = $db->Execute($stmt); if (!$rs){ print $db->ErrorMsg(); echo '

'; }

El bit de código anterior simplemente muestra el siguiente mensaje de error:

 [Microsoft][ODBC SQL Server Driver][SQL Server]Procedure or function 'usp_insert_aweber_list' expects parameter '@List_ID', which was not supplied. 

Creo que proporcioné el parámetro List_ID en mi primera llamada $ db-> InParameter (). Corrígeme si estoy equivocado. Antes de que cualquiera responda con ‘Agregar un @’ delante del nombre de param ‘, la documentación indica que no es necesario y ya lo he intentado y resulta en el mismo mensaje de error.

Gracias

Acabo de investigar el código ADOdb 5.13 (y 5.14 y 5.15 changelog no menciona ningún cambio en esa área) y parece que el controlador ODBC para MSSQL no admite parámetros de enlace a las declaraciones preparadas y no produce ningún error mientras intentas hazlo.

He visto que esto funciona contra versiones anteriores de SQL Server, pero solo cuando se utiliza el controlador ‘mssql’ (y no odbc_mssql o ado_mssql).