变量表或列名称

发布于 2024-09-05 20:10:12 字数 234 浏览 7 评论 0原文

INFORMIX-SQL 或任何其他基于 SQL 的数据库:

假设我有一个应用程序,其中取决于某些列的值,例如:

company.code  char(3) {abc}
company.branch char(2) {01}

我可以构造表名“abc01”以包含在 SELECT * FROM abc01; 中吗? ? 换句话说,变量表名......同样的问题适用于列名。

INFORMIX-SQL or any other SQL-based DB:

Suppose I have an app where depending on the value of some columns, example:

company.code  char(3) {abc}
company.branch char(2) {01}

Can I construct table name "abc01" for inclusion in SELECT * FROM abc01; ?
In other words, a variable table name.. same question applies for column names.

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

铃予 2024-09-12 20:10:12

仅使用可以操作字符串和处理动态 SQL 的语言。它必须即时创建声明。

您只能在查询中对值使用占位符,而不能对查询的结构元素(例如表名或列名)使用占位符。

Only in a language which can manipulate character strings and handle Dynamic SQL. It has to create the statement on the fly.

You can only use placeholders in queries for values, not for the structural elements of the query such as the table name or column name.

把回忆走一遍 2024-09-12 20:10:12

仅当您使用动态 sql 时。这就像您在应用程序中构建 sql 代码,然后使用诸如立即执行之类的东西。

sprintf(cdb_text1, "create table %s (field1 char(3));", usr_db_id);
EXEC SQL execute immediate :cdb_text;

如果使用动态sql,会因为sql注入而很糟糕。

Only if you use dynamic sql. It's like you build sql code in your app, then use something like execute immediate.

sprintf(cdb_text1, "create table %s (field1 char(3));", usr_db_id);
EXEC SQL execute immediate :cdb_text;

If you use dynamic sql, it's bad because of sql injections.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文