sql >> Database >  >> RDS >> Oracle

ORA-01008:niet alle variabelen zijn gebonden. Ze zijn gebonden

Ik weet dat dit een oude vraag is, maar hij is niet correct beantwoord, dus ik beantwoord hem voor anderen die mogelijk tegen dit probleem aanlopen.

Oracle's ODP.net bindt standaard variabelen per positie en behandelt elke positie als een nieuwe variabele.

Elke kopie behandelen als een andere variabele en de waarde ervan meerdere keren instellen, is een tijdelijke oplossing en lastig, zoals furman87 al zei, en kan leiden tot bugs als je probeert de query te herschrijven en dingen te verplaatsen.

De juiste manier is om de eigenschap BindByName van OracleCommand op true in te stellen, zoals hieronder:

var cmd = new OracleCommand(cmdtxt, conn);
cmd.BindByName = true;

U kunt ook een nieuwe klasse maken om OracleCommand in te kapselen door de BindByName in te stellen op true bij het starten, zodat u de waarde niet elke keer hoeft in te stellen. Dit wordt besproken in dit bericht



  1. Wat is de maximale querygrootte voor mysql?

  2. Kolommen draaien, ongedaan maken en splitsen in Power BI Query Editor

  3. SQL INSERT INTO… SELECT Voorbeelden

  4. Hoe weet je wat een goede index is?