我尝试使用C#代码连接到Teradata。我需要使用IN子句执行Select语句,我需要动态传递值。
例如:
TdCommand cmd = conn.CreateCommand();
cmd.CommandText = "Select EmpNum,EmpName from Employee where EmpName IN (?)";
我需要使用TdParameter来设置IN子句的值。它可以是一个或多个名称。这是Web API的一部分,我从API输入中收到名称列表。
有人可以指导我如何完成这项工作吗?
我使用的是.Net 4.5和Teradata dll 15.11版。如果您需要更多详细信息,请告诉我。
答案 0 :(得分:1)
我想不出比这更好的解决方案。
List<string> employeeNames = APICall();
cmd.CommandText = "Select EmpNum,EmpName from Employee where EmpName
IN (\"" + String.Join("\",\"", employeeNames) + "\")";
或
cmd.CommandText = "Select EmpNum,EmpName from Employee where EmpName
IN ('" + String.Join("','", employeeNames) + "')";
单引号
这会保留报价。让我知道这个是否奏效。
TdParameter有一个允许类型列表(TdType - https://developer.teradata.com/doc/connectivity/tdnetdp/15.11/help/Teradata.Client.Provider~Teradata.Client.Provider.TdType.html),而数组不是其中之一。