EXECUTE IMMEDIATE PL / SQL

时间:2013-01-17 22:12:34

标签: sql plsql

假设sStorecode是:00020

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

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

提前致谢!

2 个答案:

答案 0 :(得分: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变量。

答案 1 :(得分:0)

似乎应该是这样的:

'select AccountID from STORE.STOREINFO WHERE sStorecode = ''p'||substr(sSTORECODE,3,3)||'081''';