Plsql 将整数转换为varchar并分配给变量pl/sql

Plsql 将整数转换为varchar并分配给变量pl/sql,plsql,oracle-sqldeveloper,Plsql,Oracle Sqldeveloper,我尝试分配一个变量,将整数值转换为字符串,并将其分配给另一个变量,然后稍后使用该变量以文本形式显示该值。有点不对劲,我得到一个“字符串长度约束必须在范围(1-32767)”错误 根据你最后的评论: 从DUAL中选择to_char(to_date(:number,'j'),'jsp');是 我将要使用的示例是将整数转换为单词 问题中实际显示的代码,看起来问题在于代码中右括号的位置。然后将两者都放在“to_char”的末尾,而示例的“to_date”后面有一个 因此,您的选择应为: SELECT t

我尝试分配一个变量,将整数值转换为字符串,并将其分配给另一个变量,然后稍后使用该变量以文本形式显示该值。有点不对劲,我得到一个“字符串长度约束必须在范围(1-32767)”错误


根据你最后的评论:

从DUAL中选择to_char(to_date(:number,'j'),'jsp');是 我将要使用的示例是将整数转换为单词

问题中实际显示的代码,看起来问题在于代码中右括号的位置。然后将两者都放在“to_char”的末尾,而示例的“to_date”后面有一个

因此,您的选择应为:

SELECT to_char(to_date(num_docs,'j'),'jsp') INTO num_converted from dual;

字符串作为类型的演示和定义,至少在plsql中是这样

create table string_tab(column1 varchar2(20) );
insert into  string_tab values('AABC');

declare 
  as_string   string(20);
  as_varchar  varchar2(20);
begin 
  select column1 into as_string from string_tab;
  dbms_output.put_line('as string=>' || as_string);

  select column1 into as_varchar from string_tab;
  dbms_output.put_line('as varchar=>' || as_varchar );

  if as_string = as_varchar 
  then 
      dbms_output.put_line(' and they compare the same.');
  else 
      dbms_output.put_line (' but they don''t compare the same.'); 
  end if;
定义。以下内容摘自软件包sys.standard:

  type VARCHAR2 is NEW CHAR_BASE;
  subtype VARCHAR is VARCHAR2;
  subtype STRING is VARCHAR2;

它用得不多,我想我从来没见过它。但它在plsql中是有效的,似乎不是有效的SQL类型

抛出错误的行是什么?什么是
字符串
数据类型。这不是内置的Oracle类型。这是您在其他地方定义的吗?我将字符串更改为VARCHAR(20),并在我的execute语句中得到它:command-BEGIN numdocs('USAM')中从第39行开始的错误;终止错误报告-ORA-12702:SQL函数ORA-06512:在第11行“SYSTEM.NUMDOCS”中使用的NLS参数字符串无效ORA-06512:在第1 12702行。00000-“SQL函数中使用的NLS参数字符串无效”*原因:NLS参数字符串中指定了未知参数名称或无效值。我将字符串更改为VARCHAR(20),并在我的execute语句中获取该值:从命令-BEGIN numdocs('USAM')的第39行开始的错误;终止错误报告-ORA-12702:SQL函数ORA-06512:在第11行“SYSTEM.NUMDOCS”中使用的NLS参数字符串无效ORA-06512:在第1 12702行。00000-“SQL函数中使用的NLS参数字符串无效”*原因:NLS参数字符串中指定了未知的参数名称或无效值。请不要在
sys
system
架构中创建对象。这会给你带来麻烦。在这些模式中,各种事情的工作方式不同,部分原因是它们被设计为没有任何用户编写的代码。您的下一个问题似乎是希望
to_char
to_date
都接受两个参数,但您要将三个参数传递给
to_date
。我假设您想要
to_char(to_date(num_docs,'j'),'jsp')
;这就是我将整数转换为单词的例子。
  type VARCHAR2 is NEW CHAR_BASE;
  subtype VARCHAR is VARCHAR2;
  subtype STRING is VARCHAR2;