Oracle
 sql >> Teknologi Basis Data >  >> RDS >> Oracle

ORA-01008:tidak semua variabel terikat, ketika semuanya terikat

Kesalahan ini sering terjadi dalam kasus ODP.NET. Masalahnya terletak pada perilaku default OracleCommand dalam hal mencocokkan parameter kueri dengan parameter yang disediakan. Secara default posisi metode digunakan sebagai ganti nama metode. Dalam praktiknya, setiap parameter yang ditambahkan ke perintah akan dianggap apa adanya, apa pun namanya, dan jika Anda mereferensikan parameter dua kali dalam teks kueri, maka Anda harus menambahkan nilainya dua kali!

Perilaku default ini dapat ditimpa dengan menyetel BindByName untuk true di OracleCommad tetapi dalam kasus SqlDataSource Anda tidak memiliki akses ke sana dan Anda perlu memberikan nilai beberapa kali dalam urutan yang benar:

<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>

(Saya harap saya tidak melewatkan apapun)

Sebagai alternatif, Anda dapat mempertimbangkan untuk membuat Penyedia Anda sendiri yang berasal dari ODP.NET dengan BindByName disesuaikan.




  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Setel ulang urutan kenaikan otomatis pl-sql

  2. Penanganan pengecualian PL/SQL:tidak melakukan apa pun (abaikan pengecualian)

  3. Kinerja SQL dinamis vs prosedur tersimpan di Oracle

  4. Oracle APEX - SQL - Membuat Sejarah Berurutan dan Menghitung Hari Antara Setiap Fase

  5. Pembuatan indeks