Plsql 在pl/sql中打印变量
我有以下代码:Plsql 在pl/sql中打印变量,plsql,oracle10g,Plsql,Oracle10g,我有以下代码: DECLARE v_hire_date DATE:='30-Oct-2000'; v_six_years BOOLEAN; BEGIN IF MONTHS_BETWEEN(SYSDATE,v_fecha_contrato)/12 > 6 THEN v_six_years:=TRUE; ELSE v_six_years:=FALSE; END IF; DBMS_OUTPUT.PUT_LINE('flag '||v_six_years);
DECLARE
v_hire_date DATE:='30-Oct-2000';
v_six_years BOOLEAN;
BEGIN
IF MONTHS_BETWEEN(SYSDATE,v_fecha_contrato)/12 > 6 THEN
v_six_years:=TRUE;
ELSE
v_six_years:=FALSE;
END IF;
DBMS_OUTPUT.PUT_LINE('flag '||v_six_years);
END;
我想打印变量v_六年
的值,但得到错误:
ORA-06550: line 10, column 24:
PLS-00306: wrong number or types of arguments in call to '||'
ORA-06550: line 10, column 3
如何打印变量的值
v_六年
?PL/SQL没有表示布尔值的文本。您必须将v_six_years布尔值转换为字符串,或者如果希望打印该值,则不使用布尔值。PL/SQL布尔值非常适合逻辑,但如果您希望显示值,它就没有用了
DECLARE
v_hire_date DATE:='30-Oct-2000';
v_six_years VARCHAR2(1);
BEGIN
IF MONTHS_BETWEEN(SYSDATE,v_fecha_contrato)/12 > 6 THEN
v_six_years:='1';
ELSE
v_six_years:='0';
END IF;
DBMS_OUTPUT.PUT_LINE('flag '||v_six_years);
END;
或
似乎您无法将
varchar
和boolean
合并
定义此功能:
FUNCTION BOOLEAN_TO_CHAR(FLAG IN BOOLEAN)
RETURN VARCHAR2 IS
BEGIN
RETURN
CASE FLAG
WHEN TRUE THEN 'TRUE'
WHEN FALSE THEN 'FALSE'
ELSE 'NULL'
END;
END;
然后像这样使用它:
DBMS_OUTPUT.PUT_LINE('flag '|| BOOLEAN_TO_CHAR(v_six_years));
您可以使用下面的命令在PLSQL中打印布尔值
dbms_output.put_line('v_six_years '|| sys.diutil.bool_to_int(v_six_years));
新年快乐
dbms\u输出。put\u行
不会重载以接受布尔参数。简单的单行答案是
dbms_output.put_line(当v_六年=true,则为'true'或'false'结束时)
您可以使用
\echo
meta命令打印变量的内容。从man psql
:
要检索变量的内容,请在名称前面加一个冒号,例如:
testdb=> \echo :foo
bar
你能解释一下为什么这个代码能回答这个问题吗?代码唯一的答案是,因为他们不教解决方案。(此外,代码格式非常缺乏。请在提交之前使用Ctrl-K并预览您的文章。)这并不能回答问题
dbms\u输出。put\u行
可以接受varchar2参数,但不能接受布尔值,这就是问题所在。
declare
v_line varchar2(40); --declare
begin
v_line := 'Happy new year'; --assigns
dbms_output.put_line (v_line); --display
end;
testdb=> \echo :foo
bar