我是PL / SQL的新手,但有很多其他的SQL经验,包括Oracle(只是没有那么多脚本)。我想声明一个数字(整数)var,将其设置为行计数,并将其显示在句子包装的字符串中。本练习的最终目标是使用SQL * Plus脚本打印字符串“有1行”。
在Unix上的SQL * Plus中,我这样做:
SQL> variable v_dCnt number;
SQL> select count(*) into :v_dCnt from dual;
COUNT(*)
----------
1
SQL> select 'There are ' || :v_dCnt || ' rows' as MESSAGE from dual;
MESSAGE
-------------------------------------------------------
There are rows
请注意它如何显示v_dCnt
的空白而不是值1
在Win7上的Rapid SQL中,我做
variable v_dCnt number;
select count(*) into :v_dCnt from dual;
select 'There are ' || :v_dCnt || ' rows' from dual;
并获取ORA-01008:并非所有变量都绑定
我做错了什么?
答案 0 :(得分:2)
在SQL * Plus中,您很可能只需要将SELECT INTO
放在PL / SQL块中
SQL> variable v_dCnt number;
SQL> begin
2 select count(*)
3 into :v_dCnt
4 from dual;
5 end;
6 /
PL/SQL procedure successfully completed.
SQL> ed
Wrote file afiedt.buf
1* select 'There are ' || :v_dCnt || ' rows' from dual
SQL> /
'THEREARE'||:V_DCNT||'ROWS'
-------------------------------------------------------
There are 1 rows