你好我所有我有一個存儲過程我也傳遞參數。Mysql存儲過程參數排序
由於我傳遞參數的順序與sql中的參數不一致。我收到一個一般錯誤。我傳遞的參數正確的順序按行:
$stored_procedure_to_execute_with_parameters= 'Call '.$stored_procedure->name.'('.$parameter_argument_keys.')';
換算成
Call save_user(':in_user_name', :in_user_password, :in_user_first_name') and so on.
我的過程中的SQL參數列表是in_user_password然後in_user_first_name然後in_user_name。
參數是否需要按照存儲過程本身的正確順序傳遞。這是因爲我創造的所有參數
$results=array();
if(!is_null($stored_procedure->getParameter()) && count($stored_procedure->getParameter()>0))
{
$parameter_argument_keys= $this->parameterNamesOnly($stored_procedure->getParameter());
$stored_procedure_to_execute_with_parameters= 'Call '.$stored_procedure->name.'('.$parameter_argument_keys.')';
try{
$connection = Yii::app()->db;
$command = $connection->createCommand($stored_procedure_to_execute_with_parameters);
foreach ($stored_procedure->getParameter() as $parameter)
{
$command->bindValue(':'.$parameter->getName(),$parameter->getValue(),$parameter->getType());
}
$dataReader = $command->query();
$dataReader->setFetchMode(PDO::FETCH_ASSOC);
$results = $dataReader->readAll();
}
catch(Exception $e){
Yii::log('', CLogger::LEVEL_ERROR, $e->getMessage());
}
是的params順序是相當重要的,必須以SP中定義的相同方式。 – Satya 2013-03-02 11:51:40
您無法通過您在存儲過程的調用中指定的順序傳入它需要與SQL過程的順序完全匹配 – 2013-03-02 11:56:47
當您按順序傳遞參數時,MySQL不喜歡。 – SparKot 2013-03-02 11:58:41