首页 > 解决方案 > 插入行时有没有办法避免“此处不允许列”错误

问题描述

所以我正在制作一个表格,在这种情况下生成收据编号:

  1. 如果账户类型是 Home Loan,前 2 个字母应该是“HL”,如果是学生贷款,前 2 个字母应该是“SL”
  2. 接下来的 2 个字母应该来自姓氏,并用左边的 0 填充这是我的代码和错误,每当我插入行时:
insert into processedaccounts
values (30, (substr(accounttype,1,2) || (lastname,1,2) || RPAD(receiptnumber_seq.nextval9,'0')), 'Metropolis', 'Home Loan', 'Adam', 'Smith');

错误报告 - SQL ERROR: ORA-00984: column not allowed here

  1. 00000 - “此处不允许列”

我应该如何修改我的查询以避免“此处不允许列”错误

标签: sqloracle11g

解决方案


在您的查询中:

  • 帐户类型的 substr 函数错误,您应该获取第一个字符和空格后的第一个字符
  • RPAD 功能错误
  • 没有姓氏的 substr 函数
  • 缺少参考表
  • 应从参考表中选择值

我已更正它们,这是最终查询,根据您的要求更改表名和列名

insert into processedaccounts
select  requestid,
        substr(account_type,1,1)||SUBSTR(account_type, Instr(account_type, ' ', 1, 1) +1,1) || substr(lastname,1,2) || RPAD(receiptnumber2.nextval,9,0) ,
        city, 
        account_type,
        firstname,
        lastname
from request_accounts
where request_accounts.requestid = 30;

推荐阅读