Как выполнить хранимую процедуру MSSQL с библиотекой ADOdb PHP? - PullRequest
1 голос
/ 27 января 2012

Я следовал инструкциям в документации ADOdb , и я пытаюсь выполнить хранимую процедуру в базе данных SQL Server 2008, например:

$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 '<br /><br />';
}

Бит вышекода просто выводит следующее сообщение об ошибке:

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

Я считаю, что я предоставил параметр List_ID в моем первом вызове $ db-> InParameter ().Поправьте меня если я ошибаюсь.Прежде чем кто-либо ответит «Добавить @ перед именем параметра», в документации отмечается, что она не нужна, и я уже пробовал ее, и это приводит к тому же сообщению об ошибке.

Спасибо

Ответы [ 2 ]

2 голосов
/ 27 января 2012

Я только что посмотрел на код ADOdb 5.13 (а в списке изменений 5.14 и 5.15 не упоминаются какие-либо изменения в этой области), и кажется, что драйвер ODBC для MSSQL не поддерживает параметры привязки к подготовленным операторам и не выдает никаких ошибок, пока вы пытаемся это сделать.

0 голосов
/ 30 июля 2013

Я видел, как это работает с более ранними версиями SQL Server, но только при использовании драйвера 'mssql' (а не odbc_mssql или ado_mssql).

...