>데이터 베이스 >MySQL 튜토리얼 >내 SQL 쿼리에서 '변수 이름 '@'이 이미 선언되었습니다.' 오류가 발생하는 이유는 무엇입니까?

내 SQL 쿼리에서 '변수 이름 '@'이 이미 선언되었습니다.' 오류가 발생하는 이유는 무엇입니까?

Linda Hamilton
Linda Hamilton원래의
2025-01-01 07:00:11815검색

Why Am I Getting the

SQL 쿼리에서 "변수 이름 '@'이 이미 선언되었습니다" 오류

SQL 쿼리를 실행할 때 다음 사항을 확인하는 것이 중요합니다. 쿼리 일괄 처리 또는 저장 프로시저 내에서 선언된 변수 이름은 고유합니다. 이 오류는 '@' 접두사를 사용하여 변수 대체를 사용할 때 자주 발생합니다.

오류 원인

제공된 코드에서 '@LockState'의 두 번째 인스턴스 매개변수 컬렉션에서 오류가 발생합니다. 이는 동일한 쿼리 내에서 각 매개변수가 고유한 이름을 가져야 하기 때문입니다.

해결 방법

이 오류를 해결하려면 다음 해결 방법 중 하나를 구현하세요.

  • 각 후 매개변수 컬렉션 지우기 반복:

각 루프 반복 후에 rwd.command.Parameters.Clear()를 사용하여 이전에 추가된 매개변수를 제거하고 다음 반복이 새 세트로 시작되도록 합니다.

for (long counter = from; counter <= to; counter++)
{
    rwd.command.Parameters.Clear();
    // ... (remaining code)
}
  • 외부에서 매개변수 선언 루프:

루프 외부에 매개변수를 선언하고 루프 내에 값을 할당합니다. 이렇게 하면 매개변수가 한 번만 정의됩니다.

rwd.command.Parameters.Add(new SqlParameter("@LockState", SqlDbType.NVarChar));
rwd.command.Parameters.Add(new SqlParameter("@card_descr", SqlDbType.NVarChar));

for (long counter = from; counter <= to; counter++)
{
    // ... (remaining code)
    rwd.command.Parameters["@LockState"].Value = 1;
    rwd.command.Parameters["@card_descr"].Value = txt_desc2.Text;
}

이 단계를 수행하면 쿼리에서 고유한 변수 이름을 보장하여 "변수 이름 '@'이 이미 선언되었습니다." 오류를 방지하고 원활한 실행.

위 내용은 내 SQL 쿼리에서 '변수 이름 '@'이 이미 선언되었습니다.' 오류가 발생하는 이유는 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.