我有以下代码:
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_six_years
,但我收到错误:
ORA-06550: line 10, column 24:
PLS-00306: wrong number or types of arguments in call to '||'
ORA-06550: line 10, column 3
如何打印变量的值 v_six_years
?
看来你不能连续 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_output.put_line
没有重载接受一个布尔参数。简单的一行答案就是
dbms_output.put_line(v_six_years = true时的情况,然后是'true',否则'false'结束);
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;
要么
DECLARE
v_hire_date DATE:='30-Oct-2000';
v_six_years BOOLEAN;
v_six_years_display VARCHAR2(5);
BEGIN
IF MONTHS_BETWEEN(SYSDATE,v_fecha_contrato)/12 > 6 THEN
v_six_years:=TRUE;
v_six_years_display := 'true';
ELSE
v_six_years:=FALSE;
v_six_years_display := 'false';
END IF;
DBMS_OUTPUT.PUT_LINE('flag '||v_six_years_display);
END;
declare
v_line varchar2(40); --declare
begin
v_line := 'Happy new year'; --assigns
dbms_output.put_line (v_line); --display
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_output.put_line
没有重载接受一个布尔参数。简单的一行答案就是
dbms_output.put_line(v_six_years = true时的情况,然后是'true',否则'false'结束);
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;
要么
DECLARE
v_hire_date DATE:='30-Oct-2000';
v_six_years BOOLEAN;
v_six_years_display VARCHAR2(5);
BEGIN
IF MONTHS_BETWEEN(SYSDATE,v_fecha_contrato)/12 > 6 THEN
v_six_years:=TRUE;
v_six_years_display := 'true';
ELSE
v_six_years:=FALSE;
v_six_years_display := 'false';
END IF;
DBMS_OUTPUT.PUT_LINE('flag '||v_six_years_display);
END;
declare
v_line varchar2(40); --declare
begin
v_line := 'Happy new year'; --assigns
dbms_output.put_line (v_line); --display
end;
新年快乐