sql - PLSQL 问题:使用带有过程块的随机值更新员工的薪水
问题描述
所以我正在努力解决这段代码的问题。我必须为 setSalaries() 编写一个程序,我需要能够将人的薪水(作为参数传递的名称)更新为一个范围内的随机生成的值(作为参数传递),但是我遇到了错误. 到目前为止,这是我的代码。任何帮助将不胜感激。
Create or Replace Procedure setEmpSalary(p_name in VARCHAR low in INTEGER, high in INTEGER)
As
l_salary AlphaCoEmp.salary%type;
BEGIN
Select salary from AlphaCoEmp where name = p_name;
l_salary = ROUND(dbms_random.value(low,high));
update AlphaCoEmp
set salary = l_salary
commit;
END;
/
show errors;
这是另一个类似问题的示例代码,但它为表中的每个人分配了一个值
Create or Replace Procedure setSalaries(low in INTEGER, high in INTEGER)
As
Cursor Emp_cur IS
Select * from AlphaCoEmp;
-- Local variables
l_emprec Emp_cur%rowtype;
l_salary AlphaCoEmp.salary%type;
BEGIN
for l_emprec IN Emp_cur
loop
l_salary := ROUND(dbms_random.value(low,high));
update AlphaCoEmp
set salary = l_salary
where name = l_emprec.name;
END LOOP;
commit;
END;
/
show errors;
解决方案
我想你想过滤update
. select
是不必要的:
update AlphaCoEmp
set salary = ROUND(dbms_random.value(low, high)
where name = p_name;
推荐阅读
- javascript - 使用本地存储或 cookie 来检测菜单点击
- java - 如何在 Java 中获取 OkHttp 的 POST 正文请求?
- css - 线性渐变背景末尾的CSS阴影白线
- c++ - QSqlQuery 没有从 postgresql 中选择记录
- node.js - 猫鼬:按名称查找模型 - 回调从未调用
- windows - 替换 Path 变量中的值
- twilio - 我想用简单的文本回复 twilio SMS,同时将 SMS 转发到某个 emailId
- javascript - 在 javascript 中添加日期并产生意外结果
- java - 如何以编程方式滚动到 Java 桌面应用程序部分的特定部分
- android - 以编程方式转换 .jks 文件