你好我所有我有一个存储过程我也传递参数。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