zycchen 发表于 2018-10-18 11:29:03

oracle pl/sql raw转换成varchar2方法

FUNCTION raw2varchar2(p_raw    IN RAW,  p_cset_f IN VARCHAR2 DEFAULT NULL,
  p_cset_t IN VARCHAR2 DEFAULT NULL) RETURN VARCHAR2 IS
  l_buf_cset_f VARCHAR2(32000);
  l_buf_cset_t VARCHAR2(32000);
  l_return_status VARCHAR2(1);
  l_msg_count   NUMBER;
  l_msg_data      VARCHAR2(4000);
  
BEGIN
  l_buf_cset_f := utl_raw.cast_to_varchar2(p_raw);
  heb_log.put_line('default charset, l_buf_cset_f lenb:' || lengthb(l_buf_cset_f));
  heb_log.put_line(l_buf_cset_f);
  IF p_cset_f IS NOT NULL
  AND p_cset_t IS NOT NULL THEN
  l_buf_cset_t := convert(l_buf_cset_f,
  p_cset_t,
  p_cset_f);
  heb_char_set_pub.check_convert(p_init_msg_list => fnd_api.g_false,
  p_commit      => fnd_api.g_false,
  x_return_status => l_return_status,
  x_msg_count   => l_msg_count,
  x_msg_data      => l_msg_data,
  p_cset_f      => p_cset_f,
  p_cset_t      => p_cset_t,
  p_len_f         => length(l_buf_cset_f),
  p_lenb_f      => lengthb(l_buf_cset_f),
  p_len_t         => length(l_buf_cset_t),
  p_lenb_t      => lengthb(l_buf_cset_t));
  heb_pub.raise_error(l_return_status);
  END IF;
  RETURN nvl(l_buf_cset_t,
  l_buf_cset_f);
  
END raw2varchar2;


页: [1]
查看完整版本: oracle pl/sql raw转换成varchar2方法