首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >datareader mysql

datareader mysql
EN

Stack Overflow用户
提问于 2012-10-13 02:51:37
回答 1查看 1.3K关注 0票数 1

好的,我有一个存储过程,我想构建一个包含每个结果集的数组。

可以说是数组的数组。

当我运行mysql工作台时,我的存储过程返回正确的结果。

它通过正确地遍历每个集合来工作。然而,在最后一个结果之后,它返回到结果,然后抛出一个错误,exeception捕捉到该错误。

异常消息只是SQLSTATEHY000: General error。

如果看起来下一步结果会更远。

我怎么才能绕过这个。尝试读取不存在的结果时出现错误。一个集合可能在那里,但它可能没有行,所以行计数不会绕过它,因为在后面的代码中,我需要知道数组映射到哪个对象,即$image = result,$events = $result1;

如果我做了行计数,$result可能会被设置为事件。

代码语言:javascript
复制
public static function getHomePageContent()
{
    $results = array();

    try{
        $connection = Yii::app()->db;
        $command = $connection->createCommand("CALL get_homepage_content()");


        $dataReader = $command->query();
        $dataReader->setFetchMode(PDO::FETCH_ASSOC);

        do {                   
                $results[] =  $dataReader->readAll();

        } while ($dataReader->nextResult());

        $dataReader->close();
    }

    catch(Exception $e){
        Yii::log('', CLogger::LEVEL_ERROR, $e->getMessage());
    }

    $connection->setActive(false);

    return $results;
}

存储过程是

代码语言:javascript
复制
BEGIN

SET @slideshow_visible := 1;
SET @image_approved :=1;
SET @image_visible  :=1;
SET @image_format_type :='image';
SET @video_format_type :='video';

/* Main Slideshow Details */
SELECT title, button_url, title_text, alt_text, image_path, caption
FROM slideshow 
WHERE visible = @slideshow_visible
ORDER BY slideshow.order ASC;

/* News Section */
SELECT p1.*,wm2.meta_value
FROM warring_blogw.wp_posts p1
LEFT JOIN
      warring_blogw.wp_postmeta wm1
      ON (
              wm1.post_id = p1.id
              AND wm1.meta_value IS NOT NULL
              AND wm1.meta_key = "_thumbnail_id"
      )
LEFT JOIN
      warring_blogw.wp_postmeta wm2
      ON (
              wm1.meta_value = wm2.post_id
              AND wm2.meta_key = "_wp_attached_file"
              AND wm2.meta_value IS NOT NULL
      )         
/*LEFT JOIN 
     warring_blogw.wp_usermeta wm3
         ON(
                wm3.user_id = p1.post_author
            )*/
WHERE
      p1.post_status="publish"
      AND p1.post_type="post";

/* Photos */
SELECT im.title,im.alias_title, im.description, im.thumbnail_image_small, im.hits 
FROM image im
WHERE im.approved = @image_approved AND im.visible = @image_visible AND im.format_type = @image_format_type;


SELECT * from event;

它总是在最后一个结果上我得到了错误-即使我使用了while循环或do,而错误发生在fetchall上

EN

回答 1

Stack Overflow用户

发布于 2012-10-13 03:25:50

要返回结果集而不是异常,可以在存储过程的顶部添加以下内容:

代码语言:javascript
复制
DECLARE EXIT HANDLER FOR SQLEXCEPTION
        SELECT 'SQLEXCEPTION raised' AS errmsg;

当然,您可能应该首先修复抛出异常这一事实。也许您想要post存储过程的内容?

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/12865331

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档