0

假设 sStorecode 是:00020

以下只是执行 select 语句以获取表 STOREINFO 中另一个数据库 STORE 的 accountid,例如连接到 p008081(其中 008 是 sStorecode 的子字符串,081 是我在下面加入的内容),但我收到错误某种原因(无效的 SQL 语句),有人可以帮忙吗?

EXECUTE IMMEDIATE 'select AccountID from STOREINFO@STORE.p'||substr(sSTORECODE,3,3)||'081';

提前致谢!

4

2 回答 2

2

EXECUTE IMMEDIATE 是一个 PL/SQL 命令。在 PL/SQL 中,SELECT 语句的结果需要到某个地方。但它是你的声明,你没有指定它应该去哪里。

因此,如果您期望单行,您可以编写:

EXECUTE IMMEDIATE 'select AccountID from STOREINFO@STORE.p'||substr(sSTORECODE,3,3)||'081'
    INTO l_account_id;

l_account_id是一个本地 PL/SQL 变量。

如果你期望多行,你可以使用

EXECUTE IMMEDATE ... BULK COLLECT INTO l_account_tab;

l_account_tab是一个 PL/SQL 集合变量。

或者,如果您想使用游标,您可以编写:

 OPEN account_id_cv FOR 'select AccountID from STOREINFO@STORE.p'||substr(sSTORECODE,3,3)||'081';

account_id_cv是一个 REF CURSOR 变量。

于 2013-01-17T22:38:15.713 回答
0

似乎应该是这样的:

'select AccountID from STORE.STOREINFO WHERE sStorecode = ''p'||substr(sSTORECODE,3,3)||'081''';
于 2013-01-17T22:31:05.830 回答