- Este tópico contém 11 respostas, 2 vozes e foi atualizado pela última vez 18 anos, 9 meses atrás por Anônimo.
-
AutorPosts
-
1 de fevereiro de 2006 às 9:04 pm #75153Anônimo
estou precisando de uma ajuda pra montar uma query d update…
Queria algo equivalente em SQL Server…
EX:UPDATE tabela01
SET coluna01 = p_teste /*p_teste ? minha variavel*/
FROM tabela01 t1, tabela02 t2
WHERE t1.colunaA = t2.colunaA
AND t1.colunaB = p_teste2 /*p_teste2 ? minha outra variavel d teste*/Ou seja, esse comando ? simples e funciona perfeitamente no SQL Server… s? que eu preciso fazer isso no Oracle 9i, pois eu nao tenho uma determinada coluna q preciso comparar na tabela T2, ela s? existe na tabela T1 que por sua vez est?o ligadas atrav?s de relacionamento.
Algu?m poderia me ajudar com essa simples query por favor?
Abra?os!
1 de fevereiro de 2006 às 9:30 pm #75154Anônimovc pode usar vari?vel de sustitui??o.
UPDATE tabela01
SET coluna01 = &p_teste
FROM tabela01 t1, tabela02 t2
WHERE t1.colunaA = t2.colunaA
AND t1.colunaB = &p_teste2 ;Abra?o.
1 de fevereiro de 2006 às 9:43 pm #75155Anônimonao posso usar esse tipo d variavel pois eu uso procedure… logo, devo utilizar os parametros q recebo da procedure
o problema ? q d? erro d sintaxe quando eu coloco essa query….
ORA0933: Comando SQL nao encerrado adequadamente
e ? praticamente a mesma query q postei aqui…Onde est? o problema ?
1 de fevereiro de 2006 às 10:39 pm #75156Marcio68AlmeidaParticipanteAcho que ? algo assim :
Update tabela_1
Set coluna = p_teste
Where '1' = (Select '1'
From tabela_2
where tabela_2.coluna_1 = tabela_1.coluna_1)
And coluna_2 = p_teste2Veja se funciona, n?o testei… 😆
1 de fevereiro de 2006 às 11:21 pm #75158AnônimoNAO FUNCIONA… POIS NA CLAUSULA WHERE EU QUERO ATUALIZAR UM CAMPO D UMA TABELA, Q SE NAO SE ENCONTRA NA TABELA Q TOU ATUALIZANDO…
EXEMPLO….
UPDATE T_1
SET T_1.CAMPO1= 1,
TT_1.BT_CAMPO2= 1
WHERE ‘1’ = (SELECT ‘1’ FROM T_2 WHERE T_1.ID_1 = T_2.ID_1)
AND T_2.CAMPO4= P_TESTE;OU SEJA, ISSO FALHA…
AND T_2.CAMPO4= P_TESTE;
POIS A COLUNA
CAMPO4 S? EXISTE NA TABELA T_2, E ESTOU ATUALIZANDO A TABELA T_1…. logo d? erro dizendo q esse campo nao existe na tabela T1… (o q ? uma verdade)..alguem pode ajudar???
2 de fevereiro de 2006 às 2:43 pm #75159AnônimoFa?a assim:
merge into tabela01
using tabela02
(on tabela01.colunaA = tabela02.colunaA)
when matched then
update set coluna01 = &p_teste where tabela01.colunaB = &p_teste2 ;Abra?o.
2 de fevereiro de 2006 às 3:29 pm #75161Marcio68AlmeidaParticipanteSe esse ? o problema, ent?o t? f?cil… risos…
Eu havia entendido que a coluna pertencia a tabela 1
Basta colocar a clausula dentro dos par?nteses :
UPDATE T_1
SET T_1.CAMPO1= 1,
TT_1.BT_CAMPO2= 1
WHERE '1' = (SELECT '1' FROM T_2 WHERE T_1.ID_1 = T_2.ID_1
AND T_2.CAMPO4= P_TESTE);
2 de fevereiro de 2006 às 4:00 pm #75163AnônimoNADA…
OLHA COMO FICOU MINHA QUERY….
MERGE INTO T_I_TRANS IT USING T_TRANS T (ON IT.ID_TRANS = T.ID_TRANS) WHEN MATCHED THEN UPDATE SET IT.B_DEL = 1, IT.B_COM = 1 WHERE T.NU_T_TRANS = p_n_t_trans;
APARECE O SEGUINTE ERRO…
ORA-00969 missing ON keyword.
TEM IDEIA DO Q SEJA?
2 de fevereiro de 2006 às 7:25 pm #75168AnônimoO ON ? fora do par?nteses
MERGE INTO T_I_TRANS IT
USING T_TRANS T
ON (IT.ID_TRANS = T.ID_TRANS)
WHEN MATCHED THEN
UPDATE SET IT.B_DEL = 1,
IT.B_COM = 1
WHERE T.NU_T_TRANS = p_n_t_trans;Abra?o.
3 de fevereiro de 2006 às 12:23 am #75170AnônimoMESMO COLOCANDO FORA… D? O MESMO ERRO…
EU FIZ O TESTE ANTES D POSTAR AQUI… MAS NAO FOI NAO. EU EM UM SITE Q NAO POSSO COLOCAR CLAUSULA WHERE QND USO MERGE… ISSO PROCEDE? SENDO ASSIM COMO FICARIA?
ABS
3 de fevereiro de 2006 às 2:27 pm #75172AnônimoClaro que pode!! j? fiz e testei aqui!!
A unica coisa que n?o pode ? dar um update no campo j? referenciado na cl?usula ON.
Abra?o.
3 de fevereiro de 2006 às 2:34 pm #75173AnônimoDescobri o q ?!!
? q vc est? usando uma vers?o de abaixo da 10g.mas fa?a assim q deve d?:
MERGE INTO T_I_TRANS IT
USING T_TRANS T
ON (IT.ID_TRANS = T.ID_TRANS and T.NU_T_TRANS = p_n_t_trans)
WHEN MATCHED THEN
UPDATE SET IT.B_DEL = 1,
IT.B_COM = 1; -
AutorPosts
- Você deve fazer login para responder a este tópico.