sql >> Databasteknik >  >> RDS >> Oracle

ORA-01008:inte alla variabler bundna. De är bundna

Jag vet att detta är en gammal fråga, men den har inte åtgärdats korrekt, så jag svarar på den för andra som kan stöta på det här problemet.

Som standard binder Oracles ODP.net variabler efter position och behandlar varje position som en ny variabel.

Att behandla varje kopia som en annan variabel och ställa in dess värde flera gånger är en lösning och en smärta, som furman87 nämnde, och kan leda till buggar om du försöker skriva om frågan och flytta runt saker.

Det korrekta sättet är att ställa in BindByName-egenskapen för OracleCommand till true enligt nedan:

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

Du kan också skapa en ny klass för att kapsla in OracleCommand genom att ställa in BindByName till true vid instansiering, så att du inte behöver ställa in värdet varje gång. Detta diskuteras i det här inlägget



  1. Fyll i en rullgardinsruta från en mySQL-tabell i PHP

  2. Återställ en SQL Server-databas (T-SQL)

  3. Felsökning av CPU-prestanda på VMware

  4. Hur man använder den länkade tabellhanteraren i Access 2016