【发布时间】:2015-07-02 00:19:10
【问题描述】:
我将模式名称存储在表列中(例如,SOURCE_SCHEMA、TARGET_SCHEMA),并且正在检索我想要作为 DB2 存储过程中的变量使用的模式名称(例如,vSchema)。
然后如何在 SQL 语句中使用该变量,例如:
SELECT * from vSchema.TABLE_NAME
有没有更好的方法来做到这一点?提前致谢。
【问题讨论】:
-
没有额外的上下文我只能告诉你你需要使用动态 SQL,例如作为shown here。
-
SQL 无法在不知道架构和表名的情况下编译 SQL
SELECT语句。没有这些,它就无法知道如何为从数据库中检索到的值分配内存。如果您在创建 proc 时不知道这些名称,则必须使用动态 SQL 语句,这些语句本质上是在每次调用 proc 时在运行时编译的。查看PREPARE、EXECUTE和EXECUTE-IMMEDIATESQL 语句以了解动态 SQL。 -
@user2338816 请发表您的评论作为答案,因为我认为它是正确的并且可以帮助其他人;)
-
您可以在stackoverflow.com/questions/36281235/…找到更完整的答案