0

こんにちは、私はストアド プロシージャを持っています。パラメータも渡しています。

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());
             }
4

1 に答える 1

0

ストアド プロシージャのパラメーターを正しい順序で渡す必要があります。sproc は、どのパラメーターがどのパラメーターであるかを知る方法がありません。

于 2013-03-02T11:57:01.563 に答える