Sql 创建一个无参数过程
我试图创建一个无参数过程,用于从表中获取列并对其进行一些修改,然后将其粘贴到另一个表中。但我得到了以下错误: 程序演示已编译Sql 创建一个无参数过程,sql,oracle,stored-procedures,Sql,Oracle,Stored Procedures,我试图创建一个无参数过程,用于从表中获取列并对其进行一些修改,然后将其粘贴到另一个表中。但我得到了以下错误: 程序演示已编译 LINE/COL ERROR --------- ------------------------------------------------------------- 4/2 PL/SQL: SQL Statement ignored 8/10 PLS-00403: expression 'NET.NETSALARY' cannot be u
LINE/COL ERROR
--------- -------------------------------------------------------------
4/2 PL/SQL: SQL Statement ignored
8/10 PLS-00403: expression 'NET.NETSALARY' cannot be used as an INTO-target of a SELECT/FETCH statement
8/24 PL/SQL: ORA-00904: : invalid identifier
错误:检查编译器日志
我在sql中使用的代码是:
create or replace procedure "DEMO"
as
begin
case when comm is null then 0.9*grosssalary
when comm<500 then 0.85*grosssalary
else 0.8*grosssalary end
into net.netsalary from (select salary+comm as grossSalary,comm from
employee) ;
end ;
/
我正在尝试将数据插入到表net的netsalary列中。
请提一下我哪里出错了?
提前感谢您。语法是
CREATE OR REPLACE PROCEDURE demo
AS
BEGIN
INSERT INTO net (netsalary)
SELECT CASE
WHEN comm IS NULL THEN 0.9 * grosssalary
WHEN comm < 500 THEN 0.85 * grosssalary
ELSE 0.8 * grosssalary
END
FROM (SELECT salary + comm AS grossSalary, comm FROM employee);
END;
但这不会有多大好处。插入的行数与employee表中的行数一样多,但插入的只是netsalary值—您甚至不知道它属于谁
如果不知道表的描述,很难猜测您真正想要做什么
插入可能是缺少员工编号或任何列名称
使现代化那是完全不同的命令
如果这是Oracle的问题,为什么要标记MySQL和SQL Server?垃圾邮件标签将为您赢得否决票。谢谢您的帮助。是的,你说得对,关于桌子的描述。但是为了示例目的,我只为net表创建了一列,即.netsalary。