sql >> Database teknologi >  >> RDS >> Oracle

ORA-01008:ikke alle variable er bundet, når de alle er bundet

Denne fejl opstår ofte i tilfælde af ODP.NET. Problemet ligger i OracleCommands standardadfærd, når det kommer til at matche forespørgselsparametre til de leverede parametre. Som standard er positionen metode bruges i stedet for navn metode. I praksis vil hver parameter, der tilføjes til kommandoen, blive taget som den er, uanset navnet, og hvis du refererer til en parameter to gange i forespørgselsteksten, skal du tilføje værdien for den to gange!

Denne standardadfærd kan tilsidesættes ved at indstille BindByName til trueOracleCommad men i tilfælde af SqlDataSource du har ikke adgang til det, og du skal angive værdier flere gange i den rigtige rækkefølge:

<asp:SqlDataSource ID="EDTDS" runat="server" ConnectionString="<%$ ConnectionStrings:Camstar %>" ProviderName="<%$ ConnectionStrings:Camstar.ProviderName %>" SelectCommand="select ..."
    <SelectParameters>
        <asp:SessionParameter ConvertEmptyStringToNull="False" Name="startDate" SessionField="startDate" />
        <asp:SessionParameter ConvertEmptyStringToNull="False" Name="startDate" SessionField="startDate" />
        <asp:SessionParameter ConvertEmptyStringToNull="False" Name="endDate"  SessionField="endDate" />
        <asp:SessionParameter ConvertEmptyStringToNull="False" Name="equipID" SessionField="equipID" />
        <asp:SessionParameter ConvertEmptyStringToNull="False" Name="startDate" SessionField="startDate" />
        <asp:SessionParameter ConvertEmptyStringToNull="False" Name="endDate"  SessionField="endDate" />
        <asp:SessionParameter ConvertEmptyStringToNull="False" Name="equipID" SessionField="equipID" />
        <asp:SessionParameter ConvertEmptyStringToNull="False" Name="venmod" SessionField="venmod" />
        <asp:SessionParameter ConvertEmptyStringToNull="False" Name="handType" SessionField="handType" />
        <asp:SessionParameter ConvertEmptyStringToNull="False" Name="handID" SessionField="handID" />
        <asp:SessionParameter ConvertEmptyStringToNull="False" Name="operID" SessionField="operID" />
    </SelectParameters>
</asp:SqlDataSource>

(Jeg håber ikke, jeg er gået glip af nogen)

Som et alternativ kan du overveje at oprette din egen udbyder afledt fra ODP.NET wwith BindByName justeret.




  1. SQL Update-forespørgsel med gruppe efter klausul

  2. Hvordan indsætter man i tabelnavnet som alias ved hjælp af pg-promise insert helper?

  3. oracle sqlldr -> udefineret symbol:sldext

  4. ved at bruge if and else Stored Procedures MySQL