Mysql存储过程参数排序

时间:2013-03-02 11:50:10

标签: mysql stored-procedures

Hello All我有一个存储过程我也传递参数。

因为我以不同的顺序传递参数到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());
             }

1 个答案:

答案 0 :(得分:0)

您需要以正确的顺序传递存储过程的参数。 sproc无法知道哪个参数是我的其他参数。