문제 설명
ORA‑01008: 모든 변수가 바인딩되지 않았습니다(매개변수화된 쿼리가 있는 테이블 어댑터에서) (ORA‑01008: not all variables bound (in table adapter with parameterized query))
환경:
Visual Studio 2010(.NET Framework 4)
ASP.NET 웹 애플리케이션
Oracle Database
System.Data.OracleClient 사용
사용자가 입력할 수 있는 웹 양식이 있습니다. 또는 내 쿼리의 각 매개변수에 해당하는 텍스트 상자에 데이터가 없습니다. 사용자가 데이터를 입력하지 않으면 텍스트 상자에 "0"이 표시됩니다. value.
여기 내 쿼리가 있습니다.
SELECT "CardNo" , "Name"
FROM CSC.CommercialCardList
WHERE("CardNo"=:CardNo or :CardNo=0) and ("Name"=:Name or :Name=0)
MYDATABASE.xsd 패널의 tableadaptor에서 쿼리를 마우스 오른쪽 버튼으로 클릭하고 ' 데이터 미리보기' 및 매개변수 값을 "0"으로 채웁니다. 오류가 발생합니다("ORA‑01008: 모든 변수가 바인딩되지 않음")
<참조 솔루션
방법 1:
You need to bind 4 variables as part of your code.
2 for "CardNo"=:CardNo or :CardNo=0
2 for "Name"=:Name or :Name=0
방법 2:
You have to set command BindByName As true :
1‑ In OracleCommand as the below
OracleCommand cmd = new OracleCommand();
2‑ In Tableadaptor as the below and call the SetBindByName with ture value
namespace MyTableAdapters
{
public partial class MyTabTableAdapter
{
public bool SetBindByName
{
set
{
this.Adapter.InsertCommand.BindByName = value;
this.Adapter.UpdateCommand.BindByName = value;
this.Adapter.DeleteCommand.BindByName = value;
foreach (Oracle.DataAccess.Client.OracleCommand cmd in this.CommandCollection)
{
cmd.BindByName = value;
}
}
}
}
}
(by elh4m v、Durga Viswanath Gadiraju、Osama AbuSitta)