大家好,我有一个存储过程,我也在传递参数。
由于我以与 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());
}