名为 CacheParameter 的系统间缓存
Intersystems Cache Named CacheParameter
我不想在参数的 SQL 语句中使用 ?
标记,而是使用命名字段,因为它比 WHERE something = ? AND somethingelse < ? and whatever LIKE ?
更具可读性
在某些能力下是否可能出现以下情况?
SELECT * FROM NAMESPACE.Table WHERE Name = @name AND Something = @anothervar
官方文档根本没有提到它,并向我展示了以下内容
string SQLtext =
"SELECT ID, Name, DOB, SSN "
+ "FROM Sample.Person "
+ "WHERE Name %STARTSWITH ?"
+ "ORDER BY Name";
CacheCommand Command = new CacheCommand(SQLtext, CacheConnect);
参数值设置为获取Name以A开头的所有行,参数传递给CacheCommand对象:
CacheParameter Name_param =
new CacheParameter("Name_col", CacheDbType.NVarChar);
Name_param.Value = "A";
Command.Parameters.Add(Name_param);
Caché 中的命名 SQL 参数仅以两种方式可用。
- Embedded sql 与 &sql()。在 .Net 上工作时不能使用这种方式,因为它只是 CacheObjectScript。
- Class Query 你不能同时使用它,因为这样的 SQL 查询应该在 Class 本身上定义,并且当你调用它时,你应该传递所有参数, 没有名字。
所以,你的情况不行。
我不想在参数的 SQL 语句中使用 ?
标记,而是使用命名字段,因为它比 WHERE something = ? AND somethingelse < ? and whatever LIKE ?
在某些能力下是否可能出现以下情况?
SELECT * FROM NAMESPACE.Table WHERE Name = @name AND Something = @anothervar
官方文档根本没有提到它,并向我展示了以下内容
string SQLtext =
"SELECT ID, Name, DOB, SSN "
+ "FROM Sample.Person "
+ "WHERE Name %STARTSWITH ?"
+ "ORDER BY Name";
CacheCommand Command = new CacheCommand(SQLtext, CacheConnect);
参数值设置为获取Name以A开头的所有行,参数传递给CacheCommand对象:
CacheParameter Name_param =
new CacheParameter("Name_col", CacheDbType.NVarChar);
Name_param.Value = "A";
Command.Parameters.Add(Name_param);
Caché 中的命名 SQL 参数仅以两种方式可用。
- Embedded sql 与 &sql()。在 .Net 上工作时不能使用这种方式,因为它只是 CacheObjectScript。
- Class Query 你不能同时使用它,因为这样的 SQL 查询应该在 Class 本身上定义,并且当你调用它时,你应该传递所有参数, 没有名字。
所以,你的情况不行。