데이터베이스의 스키마 이름은 동적입니다. 왜 다음과 같이 작동하지 않습니까?SqlCommand 매개 변수를 사용하여 선택 쿼리의 스키마 이름을 지정하는 방법
public void ReadVersion(string connString, string schemaName)
{
string selectCommand = "SELECT major FROM [@SchemaName].[version]");
using (SqlConnection sqlConn = new SqlConnection(connString))
{
using (SqlCommand cmd = new SqlCommand(selectCommand, sqlConn))
{
sqlConn.Open();
cmd.Parameters.AddWithValue("@SchemaName", schemaName);
object result = cmd.ExecuteScalar();
}
}
}
명령을 실행하면 매개 변수 값이 대체되지 않습니다. SqlCommand 매개 변수의 제한 사항입니까?
Damien에게 감사드립니다 - 내 SQL에 대한 이해가 커졌습니다. 이제는 DB 사용자에게 스키마를 쿼리하여 코드를 훨씬 더 우아하게 만들 수 있습니다. 런타임) a DEFAULT_SCHEMA - 각 스키마에 대해 일치하는 고유 한 DB 사용자를 생성했기 때문에 – GarethOwen
안녕하세요 -이 스레드를 necro하지 않으시겠습니까? 그렇지만 sys.schemas에 대해 @SchemaName을 검사하여 유효성을 검사 할 수 있습니까? –