2010-03-15 7 views

Antwort

164

Ihre syntax ist nicht ganz richtig: Sie können die Felder, um vor der INTO aufzulisten müssen, und die entsprechenden Zielgrößen nach:

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

+1. Dies ist ein Fall, in dem die T-SQL-Syntax klarer ist. Wenn Sie diese als separate Listen haben, wird das gleiche Wartungsproblem wie bei DECLARE CURSOR und FETCH auftreten (nicht dass ich, äh, diese jemals verwende). – harpo

+0

Gleiches gilt für Pl/Sql. –

1

Alternativ zu Martin Antwort, können Sie auch das Teil in hinzufügen am Ende der Abfrage die Abfrage besser lesbar zu machen:

SELECT Id, dateCreated FROM products INTO iId, dCreate 
7

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

@ Martin clayton Antwort i s richtig, aber das ist nur eine Empfehlung.

Bitte vermeiden Sie die Verwendung von mehrdeutigen Variablen in der gespeicherten Prozedur.

Beispiel:

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

Das obige Beispiel führt zu einem Fehler (Nullwert-Fehler)

Beispiel unten gibt korrekt ist. Ich hoffe, das ergibt Sinn.

Beispiel:

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

Sie können auch von ihnen eindeutig machen die Tabelle verweisen, wie:

[Credit: maganap]

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

Ich stieß auf dieses Problem, danke für das Hinzufügen der obigen Antwort. – Benp44

+0

Sie können auch durch Bezugnahme auf die Tabelle, sie eindeutig machen, wie: 'SELECT p.Id, p.dateCreated INTO id, Datecreated FROM Produkte p WHERE pName = iName' – maganap

+0

Guter Vorschlag Dank @maganap –