可以不可以再select *,后面接nvl((select a from b),0) from 这样
可以不可以再select *,后面接nvl((select a from b),0) from 这样,我这样写遇到个错误,提示
*,语法错误,未找到FROM关键字
------解决方案--------------------试试在 * 号前面加个 t
SELECT t.*,
NVL((SELECT region_name FROM ws_region WHERE region_id = t.village_id),
'村委会不详') village_name
FROM s_ehr_statistics_village t
WHERE 1 = 1
=================================
我一般不写这样的语句,根据ID获取名称的,我一般再写个函数,用函数来获取。
如:
CREATE OR REPLACE FUNCTION EMP.FUNC_GET_EMITION_NAME(in_emition_code IN VARCHAR2)
/******************************************************************************
* AUTHOR - Xujin.Jiao
* CREATION DATE - 2011-08-20
* SERVICE NAME - LanDun
*
* PROCEDURE NAME :FUNC_GET_EMITION_NAME
*
* DESCRIPTION :根据排口编码获取对应的排口中文名称
*
* Parameters :
* in_emition_code IN 排口编码
******************************************************************************
* POSSIBLE ERROR CONDITIONS :
******************************************************************************
* CHANGE LOG
******************************************************************************
* CHANGE NUMBER:
* DATE:
* DEVELOPER:
* DESCRIPTION:
*****************************************************************************/
RETURN VARCHAR2 AS
v_name VARCHAR2(100);
v_prm_code NUMBER;
v_prm_errtext VARCHAR2(200);
BEGIN
IF in_emition_code IS NOT NULL THEN
BEGIN
SELECT v.emition_name
INTO v_name
FROM emition_list_view v
WHERE v.emition_code = in_emition_code;
EXCEPTION
WHEN no_data_found THEN
v_name := '';
END;
ELSE
RETURN '';
END IF;
RETURN v_name;
EXCEPTION
WHEN OTHERS THEN
v_prm_code := SQLCODE;
v_prm_errtext := SQLERRM;
DBMS_OUTPUT.put_line('this error message is from function FUNC_GET_EMITION_NAME.');
DBMS_OUTPUT.put_line('SQLCODE: '
oracle中sql统计clob解决方案