我的問題是:使用MySQL的臨時表,誤差1422
林3功能和1個SP進行數字單詞的皈依......當我從我的功能之一撥打SP
CALL extenso_trata_grupo(`ivalor`, ' Triliao', ' Trilioes', `flag_e`, `s_ext`);
Select `s_ext` INTO `s_ext` from tbl_temp;
這給了我一個1422的錯誤...當我本身(單獨)使用它,沒有INTO
,它給了我沒有錯誤...
任何幫助嗎?
UPDATE
BEGIN
DECLARE ivalor BIGINT;
DECLARE s_ext VARCHAR(255);
DECLARE flag_e BIT;
DECLARE grupo DECIMAL(10, 2);
SET s_ext = '';
SET flag_e = 0;
SET grupo = 0;
if valor >= 1 then
set ivalor = valor/1000000000000;
if ivalor > 0 then
set valor = valor - (ivalor * 1000000000000);
CALL extenso_trata_grupo(`ivalor`, ' Triliao', ' Trilioes', `flag_e`, `s_ext`);
Select `s_ext` INTO `s_ext` from tbl_temp;
end if;
set ivalor = valor/1000000000;
if ivalor > 0 then
set valor = valor - (ivalor * 1000000000);
CALL extenso_trata_grupo(`ivalor`, ' Biliao', ' Bilioes', `flag_e`, `s_ext`);
Select `s_ext` INTO `s_ext` from tbl_temp;
end if;
set ivalor = valor/1000000;
if ivalor > 0 then
set valor = valor - (ivalor * 1000000);
CALL extenso_trata_grupo(`ivalor`, ' Milhao', ' Milhao', `flag_e`, `s_ext`);
Select `s_ext` INTO `s_ext` from tbl_temp;
end if;
...
return `s_ext`;
END
UPDATE
存儲過程extenso_trata_grupo
BEGIN
DECLARE RETORNO VARCHAR(255);
DECLARE FLAG INT;
SET RETORNO = s_ext;
SET FLAG = flag_e;
if grupo <> 0 THEN
if flag_e = 1 THEN
SET RETORNO = CONCAT(RETORNO,' e');
END IF;
SET flag_e = 1;
SET RETORNO = CONCAT(RETORNO,
(SELECT extenso_grupo(grupo) as grupo),
(CASE WHEN grupo = 1 THEN singular ELSE plural END));
END IF;
DROP TABLE IF EXISTS `tbl_temp`;
CREATE TEMPORARY TABLE `tbl_temp` (
flag_e tinyint,
s_ext varchar(255)
);
INSERT INTO `tbl_temp` (flag_e, s_ext) VALUES(flag, retorno);
END
你需要更多的代碼?爲你的幫助;) – Gil
存儲過程創建一個臨時表,它爲什麼我標記臨時表..好吧,我的英語不是最好的,我知道..對不起... ...我不知道如何解釋我的問題更好..所以希望任何人都幫助我.. – Gil
,當然它的MySQL .... - '我使用的是... – Gil