I get strange results when I try to perform operations on the tmpAzioni table. Before the INSERT where the UDF is executed, everything is correct, but from that point onward, only the queries SELECT * FROM tmpAzioni give correct results.
This is the table
CREATE TEMPORARY TABLE IF NOT EXISTS tblAzioni (
ID INT AUTO_INCREMENT PRIMARY KEY,
Listino VARCHAR(100),
Sequenza INT,
Prezzo DECIMAL(19, 8),
AzionePrezzo VARCHAR(50),
Sconto1 DECIMAL(13, 4),
AzioneSconto1 VARCHAR(50),
Sconto2 DECIMAL(13, 4),
AzioneSconto2 VARCHAR(50),
Sconto3 DECIMAL(13, 4),
AzioneSconto3 VARCHAR(50),
Sconto4 DECIMAL(13, 4),
AzioneSconto4 VARCHAR(50),
Sconto5 DECIMAL(13, 4),
AzioneSconto5 VARCHAR(50),
SeScontoTarget INT,
TipoScontoTarget CHAR(3),
ScontoTarget DECIMAL(13, 4),
AzioneScontoTarget VARCHAR(50),
Note VARCHAR(1000)
);
From this point onward everything get strange:
INSERT INTO tblAzioni (ID, Listino, Sequenza, Prezzo, AzionePrezzo, Sconto1, AzioneSconto1, Sconto2, AzioneSconto2, Sconto3, AzioneSconto3, Sconto4, AzioneSconto4, Sconto5, AzioneSconto5, SeScontoTarget, TipoScontoTarget, ScontoTarget, AzioneScontoTarget)
SELECT *
FROM JSON_TABLE(
udfCalcolaCondizioni(JsonTabAzioni, CodArticolo, Quantita, Data),
'$[*]' COLUMNS (
ID INT PATH '$.ID',
Listino VARCHAR(100) PATH '$.Listino',
Sequenza INT PATH '$.Sequenza',
Prezzo DECIMAL(19,8) PATH '$.Prezzo',
AzionePrezzo VARCHAR(50) PATH '$.AzionePrezzo',
Sconto1 DECIMAL(13,4) PATH '$.Sconto1',
AzioneSconto1 VARCHAR(50) PATH '$.AzioneSconto1',
Sconto2 DECIMAL(13,4) PATH '$.Sconto2',
AzioneSconto2 VARCHAR(50) PATH '$.AzioneSconto2',
Sconto3 DECIMAL(13,4) PATH '$.Sconto3',
AzioneSconto3 VARCHAR(50) PATH '$.AzioneSconto3',
Sconto4 DECIMAL(13,4) PATH '$.Sconto4',
AzioneSconto4 VARCHAR(50) PATH '$.AzioneSconto4',
Sconto5 DECIMAL(13,4) PATH '$.Sconto5',
AzioneSconto5 VARCHAR(50) PATH '$.AzioneSconto5',
SeScontoTarget INT PATH '$.SeScontoTarget',
TipoScontoTarget CHAR(3) PATH '$.TipoScontoTarget',
ScontoTarget DECIMAL(13,4) PATH '$.ScontoTarget',
AzioneScontoTarget VARCHAR(50) PATH '$.AzioneScontoTarget'
)
) AS JsonAzioni;
If I specify the fields instead of using the *, the results are incorrect here as well.
The strangest thing is that if I execute a query like
SELECT * FROM tblAzioni;
I get these results.
1 LID00001 5 128.30000000 Somma 0.0000 Somma 0.0000 Somma 0.0000 Somma 0.0000 Somma 0.0000 Somma 1 PRZ 60.9600 Somma
However, if I execute this query:
SELECT ID, Listino, Sequenza, Prezzo, AzionePrezzo, Sconto1, AzioneSconto1, Sconto2, AzioneSconto2, Sconto3, AzioneSconto3, Sconto4, AzioneSconto4, Sconto5, AzioneSconto5, SeScontoTarget, TipoScontoTarget, ScontoTarget, AzioneScontoTarget
FROM tblAzioni;
some fields return different results.
1 LID00001 5 128.30000000 Somma 0.0000 Somma 0.0000 Somma 0.0000 Somma 0.0000 Somma 0.0000 Somma 1 0.0000 Somma
So after this point i can’t rely on my result cause everything is broken
erik capitanio is a new contributor to this site. Take care in asking for clarification, commenting, and answering.
Check out our Code of Conduct.
4