INFORMIX-SQL或任何其他基于SQL的数据库:
假设我有一个应用程序,取决于某些列的值,例如:
company.code char(3) {abc}
company.branch char(2) {01}
我可以构造表名“abc01”以包含在SELECT * FROM abc01中; ? 换句话说,变量表名称..相同的问题适用于列名。
答案 0 :(得分:3)
仅限于可以操作字符串并处理动态SQL的语言。它必须动态创建声明。
您只能在查询值中使用占位符,而不能在查询的结构元素(如表名或列名)中使用占位符。
答案 1 :(得分:2)
仅当您使用动态sql时。这就像你在你的应用程序中构建sql代码,然后使用像执行立即。
sprintf(cdb_text1, "create table %s (field1 char(3));", usr_db_id);
EXEC SQL execute immediate :cdb_text;
如果使用动态sql,由于sql注入,这很糟糕。