Sunday, February 19, 2012

In SQLServer SI in ORACLE NO

Questo Statement in SQL Server funziona.
In Oracle PL/SQL se lo lancio funziona
Quando lo devo far funzionare da Vb.net mi si pianta e non va avanti . Sta
l a pensare.
Come mai ?

UPDATE proc_azienda
SET cod_fase_sign = (SELECT MAX(pfa.COD_FASE)
FROM PROC_FASE_RIGA pfa
WHERE (COD_GRUPPO = 'x09') AND
((TIP_DATI = 'I') OR (TIP_DATI = 'S')) AND
pfa.cod_processo = '02')
WHERE cod_gruppo = 'x09' AND
cod_processo = '02'

C' un'altro Statement:

UPDATE proc_azienda
SET cod_fase_sign = Fase
FROM (SELECT ep.cod_processo,
app.cod_azienda,
MAX(cast(ep.cod_fase as int)) as Fase
FROM esp_proc_prospetti ep,
APP_PROSP_AZ_8377 app,
(SELECT pa.cod_processo,
pa.cod_azienda,
pa.cod_fase_sign
FROM proc_azienda pa
WHERE pa.cod_gruppo = 'x09' and
pa.cod_processo = '05' and
pa.cod_fase_sign is null
GROUP BY pa.cod_processo,
pa.cod_azienda,
pa.cod_fase_sign) pnull
WHERE ep.cod_gruppo = 'x09' and
ep.cod_processo = app.cod_processo and
ep.cod_processo = pnull.cod_processo and
ep.cod_prospetto = app.cod_prospetto
GROUP BY ep.COD_PROCESSO,
app.COD_AZIENDA) FaseAzienda ,
proc_azienda pa
WHERE pa.cod_gruppo = 'x09' and
pa.cod_processo = FaseAzienda.cod_processo and
pa.cod_azienda = FaseAzienda.cod_azienda
Questa sintassi sembra regolare per SQL Server ma non per ORACLE.
Come deve essere ... ?

Grazie mille

S.Hi
Opinione di I can't capisco questo, essendo monolingue e non italiano!! Il
pesce de Babele non che utile neanche, ma ho pensato la prova di I'd!
La clausola del FROM nella dichiarazione del UPDATE non sostenuta nel
Oracle.
L'invio del DDL per il vostro TABLE della tabella structures(CREATE
TABLE...) ed i dati di esempio (come dichiarazione del INSERT) pu aiutare.
Ad una congettura desiderate qualcosa come:
UPDATE proc_azienda
SET cod_fase_sign = (SELECT MAX(pfa.COD_FASE)
FROM PROC_FASE_RIGA pfa
WHERE (pfa.COD_GRUPPO = proc_azienda.cod_gruppo) AND
(TIP_DATI = 'I' OR TIP_DATI = 'S') AND
pfa.cod_processo = proc_azienda.cod_processo)
WHERE cod_gruppo = 'x09' AND
cod_processo = '02'
Rimuova il
WHERE cod_gruppo = 'x09' AND cod_processo = '02'
al fiammifero su altri valori.
La vostra seconda dichiarazione lo ha perso completamente, ma quando ottiene
che complicato io trova solitamente che il metodo errato!
John

Hi

I can't say I understand this, being monolingual and not Italian!! Babel
Fish is not that helpful either, but I thought I'd try!

The FROM clause in the UPDATE statement is not supported in Oracle.

Posting the DDL for your table structures(CREATE TABLE...) and example data
(as INSERT statements) may help..

At a guess you want something like:

UPDATE proc_azienda
SET cod_fase_sign = (SELECT MAX(pfa.COD_FASE)
FROM PROC_FASE_RIGA pfa
WHERE (pfa.COD_GRUPPO = proc_azienda.cod_gruppo) AND
(TIP_DATI = 'I' OR TIP_DATI = 'S') AND
pfa.cod_processo = proc_azienda.cod_processo)
WHERE cod_gruppo = 'x09' AND
cod_processo = '02'
Remove WHERE cod_gruppo = 'x09' AND
cod_processo = '02' to match on other values.
Your second statement lost me totally, but when it gets that complicated it
I usually find that it is the wrong approach!
John
"Saimon" <saimon181072@.supereva.it> wrote in message
news:cgupi0$kss$1@.newsreader.mailgate.org...
> Questo Statement in SQL Server funziona.
> In Oracle PL/SQL se lo lancio funziona
> Quando lo devo far funzionare da Vb.net mi si pianta e non va avanti . Sta
> l a pensare.
> Come mai ?
> UPDATE proc_azienda
> SET cod_fase_sign = (SELECT MAX(pfa.COD_FASE)
> FROM PROC_FASE_RIGA pfa
> WHERE (COD_GRUPPO = 'x09') AND
> ((TIP_DATI = 'I') OR (TIP_DATI = 'S')) AND
> pfa.cod_processo = '02')
> WHERE cod_gruppo = 'x09' AND
> cod_processo = '02'
> C' un'altro Statement:
> UPDATE proc_azienda
> SET cod_fase_sign = Fase
> FROM (SELECT ep.cod_processo,
> app.cod_azienda,
> MAX(cast(ep.cod_fase as int)) as Fase
> FROM esp_proc_prospetti ep,
> APP_PROSP_AZ_8377 app,
> (SELECT pa.cod_processo,
> pa.cod_azienda,
> pa.cod_fase_sign
> FROM proc_azienda pa
> WHERE pa.cod_gruppo = 'x09' and
> pa.cod_processo = '05' and
> pa.cod_fase_sign is null
> GROUP BY pa.cod_processo,
> pa.cod_azienda,
> pa.cod_fase_sign) pnull
> WHERE ep.cod_gruppo = 'x09' and
> ep.cod_processo = app.cod_processo and
> ep.cod_processo = pnull.cod_processo and
> ep.cod_prospetto = app.cod_prospetto
> GROUP BY ep.COD_PROCESSO,
> app.COD_AZIENDA) FaseAzienda ,
> proc_azienda pa
> WHERE pa.cod_gruppo = 'x09' and
> pa.cod_processo = FaseAzienda.cod_processo and
> pa.cod_azienda = FaseAzienda.cod_azienda
> Questa sintassi sembra regolare per SQL Server ma non per ORACLE.
> Come deve essere ... ?
> Grazie mille
> S.

No comments:

Post a Comment