2016-12-09 3 views
1

私はmysqlのストアドファンクションに新しく、なぜ自分の結果が65535文字の長さで切り捨てられているのか疑問に思います。私はそれがconcat関数と関係があると感じていますが、この問題を解決することはできません。長さが65535文字のMysqlストアドファンクション

テストテーブルに10kを超える行がありますが、この関数は生成されたテーブルに1936行しか組み込みませんでした。閉じたテーブルのタグがないため、この関数は切り捨てられていました。

CREATE DEFINER=`root`@`localhost` FUNCTION `hotdog`() RETURNS text CHARSET utf8 
BEGIN 
DECLARE str TEXT DEFAULT "<table>"; 
DECLARE done INT DEFAULT 0; 
DECLARE var1 INT; 
DECLARE var2 INT; 
DECLARE curs CURSOR FOR SELECT * from `test`; 
DECLARE CONTINUE HANDLER FOR NOT FOUND SET done = 1; 
    OPEN curs; 
    SET done = 0; 
    REPEAT 
     FETCH curs INTO var1, var2; 
     SET str = concat(str, "<tr><td>"); 
     SET str = concat(str, var1); 
     SET str = concat(str, "</td><td>"); 
     SET str = concat(str, var2); 
     SET str = concat(str, "</td></tr>"); 
    UNTIL done END REPEAT; 
SET str = concat(str, '</table>'); 
RETURN str; 
END 

はここでそれを呼び出している私のPHPで... TEXTカラムのサイズだ

<? 
    include 'includes/config.inc.php'; 
    $q = $db->prepare("select hotdog() as hotdog1"); 
    $q->execute(); 
    $row = $q->fetch(PDO::FETCH_ASSOC); 
    echo $row['hotdog1']; 
    // for($i=1; $i<500000; $i++) 
    // { 
     // $qs = "INSERT INTO `test`(`id`, `test`) VALUES (Null,$i)"; 
     // $q = $db->prepare($qs); 
     // $q->execute(); 
    // } 
?> 

答えて

2

は、ここに私のストアドプロシージャです。

http://dev.mysql.com/doc/refman/5.7/en/storage-requirements.html

あなたはTEXTとしてSTRを宣言しています。 MEDIUMTEXTまたはLONG​​TEXTが必要です。

+0

私はそれができるようになると、私は答えとしてマークします。ありがとう –

関連する問題