这个 PL/SQL 有什么问题?绑定变量 * 未声明

问题描述 投票:0回答:5

这里是:

declare
  v_str1   varchar2(80);
begin
  v_str1 := 'test';
  print :v_str1;
end

当我在 SQL 工作表中使用 SQLDeveloper 运行它时,我得到:

Bind Variable "v_str1" is NOT DECLARED
anonymous block completed
oracle variables plsql
5个回答
5
投票

明白了:

set serveroutput on

declare
  v_str1   varchar2(80);    
begin
 v_str1 := 'test';
 dbms_output.put_line(v_str1);
end;

更多信息请点击这里。


4
投票

:VARNAME 形式的绑定变量语法主要用于 SQL* Plus(我认为动态 SQL 的绑定变量除外)。 对于 SQL* Developer、PL/SQL Developer 或其他应用程序,有“&”用于变量替换:


declare
  v_str1   varchar2(80);
begin
  v_str1 := &v_str;
  print v_str1;
end

编辑: 我的错,Oracle SQL*Developer 的代码应该是:


set serveroutput on;
declare
  v_str1   varchar2(80);
begin
  v_str1 := '&v_str';
  dbms_output.put_line(v_str1);
end;

您必须选择所有内容并执行它。结果将出现在“脚本输出”面板中。


3
投票

print
不是 PLSQL 函数。如果你想得到输出,你可以使用
dbms_output.put_line(v_str1);

set serveroutput on;    
declare v_str1 varchar2(80);
begin
    v_str1 := 'test'; 
    dbms_output.put_line(v_str1);
end;

:v_str1 是一个绑定变量,但您必须不在 plsql 中声明。当你声明它时,你必须使用 VARIABLE 关键字。


0
投票

尝试

declare
  v_str1   varchar2(80);
begin
  v_str1 := 'test';
  print v_str1;
end

0
投票
variable V_STR1 varchar2(20);--bind variable
--IF You want to use bind variable you must declare before your PL/SQL block.
set serveroutput on;--TO see the output
set autoprint on;--TO SEE THE BIND VARIABLE VALUE WHEREVER WE USED IN PL/SQL CODE
declare
    V_STR2 varchar2(80);--normal variable
begin
    :V_STR1 := 'Hello';--assigning value to bind variable
    V_STR2 := 'test';
    DBMS_OUTPUT.PUT_LINE(:V_STR1);
    DBMS_OUTPUT.PUT_LINE(V_STR2);
end;
/
© www.soinside.com 2019 - 2024. All rights reserved.