描述参数
SQLBindParameter 具有可描述参数的自变量:其 SQL 类型、精度和小数位数。 驱动程序使用此信息或元数据,将参数值转换为数据源所需的类型。 乍一看,驱动程序似乎比应用程序更了解参数元数据;毕竟,驱动程序可以轻松发现结果集列中的元数据。 事实证明,情况并非如此。 首先,大部分数据源不会为驱动程序提供发现参数元数据的方法。 其次,大部分应用程序已经知道元数据。
如果在应用程序中对 SQL 语句进行了硬编码,则应用程序编写器已知道每个参数的类型。 如果在运行时间由应用程序构造 SQL 语句,则应用程序可以在生成语句时确定元数据。 例如,当应用程序构造子句时
WHERE OrderID = ?
它可以为 OrderID 列调用 SQLColumns。
应用程序无法轻松确定参数元数据的唯一情况是用户输入参数化语句时。 在这种情况下,应用程序调用 SQLPrepare 来准备语句,调用 SQLNumParams 来确定参数的数目,以及调用 SQLDescribeParam 来描述每个参数。 但是,如前所述,大部分数据源不会为驱动程序提供发现参数元数据的方法,因此 SQLDescribeParam 并没有得到广泛支持。