查询仅在运行时才知道名称的数据库表



我在运行时得到一个数据库表名(假设来自user)。我需要查询表并返回几个字段(我知道)。如何做到这一点?

"FOR EACH"不接受变量名。所以,我不能用它。

我已经通过动态查询,特别是SET-BUFFERS()方法。即使这样,我也需要知道表名。

我需要这样的东西:

DEF VAR tablename AS CHAR. 
tablename = somename.
FOR EACH tablename WHERE ....:
     ...
     ...
END.
谁能告诉我正确的方向?

您可以使用动态缓冲区执行动态查询。在本例中,只需替换cTableName变量的值:

/* Replace _file with whatever field you're after */
DEFINE VARIABLE cTableName AS CHARACTER   NO-UNDO INIT "_file".
DEFINE VARIABLE hQuery  AS HANDLE      NO-UNDO.
DEFINE VARIABLE hBuffer AS HANDLE      NO-UNDO.
CREATE BUFFER hBuffer FOR TABLE cTableName.
CREATE QUERY hQuery.
hQuery:SET-BUFFERS(hBuffer).
hQuery:QUERY-PREPARE("FOR EACH " + cTableName).
hQuery:QUERY-OPEN().
REPEAT:
    hQuery:GET-NEXT().
    IF hQuery:QUERY-OFF-END THEN LEAVE.
    DISPLAY hBuffer:BUFFER-FIELD(1):BUFFER-VALUE.
    /* If you know the name of the field you can do: */
    /* DISPLAY hBuffer:BUFFER-FIELD("nameoffield"):BUFFER-VALUE. */
END.

/* Clean up */
hQuery:QUERY-CLOSE().
hBuffer:BUFFER-RELEASE().
DELETE OBJECT hBuffer.
DELETE OBJECT hQuery.

相关内容

  • 没有找到相关文章

最新更新