2010-03-15 11 views

Odpowiedz

164

Twój syntax nie ma rację: trzeba notować pola w kolejności przed INTO i odpowiadające im zmienne docelowe po:

SELECT Id, dateCreated 
INTO iId, dCreate 
FROM products 
WHERE pName = iName 
+4

+1. Jest to przypadek, w którym składnia T-SQL jest bardziej przejrzysta. Posiadanie tych osobnych list powoduje taki sam problem z konserwacją jak DECLARE CURSOR i FETCH (nie, że ja, uh, kiedykolwiek używam tych). – harpo

+0

To samo dotyczy również Pl/Sql. –

1

Alternatywnie do odpowiedzi Marcina, można również dodać część INTO na końcu zapytania, aby kwerenda bardziej czytelny:

SELECT Id, dateCreated FROM products INTO iId, dCreate 
7

========== ========== Advise

@martin Clayton Odpowiedź s poprawne, ale to tylko wskazówka.

Należy unikać stosowania niejednoznacznej zmiennej w procedurze przechowywanej.

przykład:

SELECT Id, dateCreated 
INTO id, datecreated 
FROM products 
WHERE pName = iName 

Powyższy przykład spowoduje wystąpienie błędu (błąd wartość zerowa)

Przykład podaję prawidłowe. Mam nadzieję, że to ma sens.

Przykład:

SELECT Id, dateCreated 
INTO val_id, val_datecreated 
FROM products 
WHERE pName = iName 

Można również dokonać ich jednoznaczne poprzez odniesienie do stołu, jak:

[Kredyty: maganap]

SELECT p.Id, p.dateCreated INTO id, datecreated FROM products p 
WHERE pName = iName 
+0

Wpadłem na ten problem, dzięki za dodanie do powyższej odpowiedzi. – Benp44

+0

Można również dokonać ich jednoznaczne poprzez odniesienie do stołu, jak: 'SELECT p.Id, p.dateCreated INTO id, datecreated z produktów p WHERE PNAME = iName' – maganap

+0

dobra propozycja Dzięki @maganap –