Loops PLSQL和循环
我有一个表,它有时会更新缺少“0”或几个连续零的记录。记录长度应超过小数点后8位(共10个字符) 例如,一个最初看起来像1.12345600的记录最终会变成1.123456 我制作了一个脚本,检查所有记录的长度,并在每个短于10个字符的记录中添加一个“0” 问题是它只添加一次“0”。上面的示例看起来像1.1234560,而不是我想要的1.12345600。 以下是脚本:Loops PLSQL和循环,loops,plsql,nested,Loops,Plsql,Nested,我有一个表,它有时会更新缺少“0”或几个连续零的记录。记录长度应超过小数点后8位(共10个字符) 例如,一个最初看起来像1.12345600的记录最终会变成1.123456 我制作了一个脚本,检查所有记录的长度,并在每个短于10个字符的记录中添加一个“0” 问题是它只添加一次“0”。上面的示例看起来像1.1234560,而不是我想要的1.12345600。 以下是脚本: DECLARE CURSOR dif IS SELECT CUST_CODE, CUS
DECLARE
CURSOR dif IS
SELECT CUST_CODE, CUST_ID, CONTRACT_NUM, MSISDN
FROM project1;
BEGIN
FOR a in dif LOOP
IF LENGTH (a.CUST_CODE)<10
THEN
UPDATE project1
SET CUST_CODE=a.CUST_CODE||'0'
WHERE CUST_CODE=a.CUST_CODE;
END IF;
END LOOP;
commit;
END;
声明
光标dif为
选择客户代码、客户ID、合同编号、MSISDN
来自项目1;
开始
对于dif循环中的
如果LENGTH(a.CUST_CODE)您可以使用rpad函数:(链接中的第三个示例就是您想要的)
您可以使用rpad函数:(链接中的第三个示例就是您想要的)
如果我是你,我会用一句话来表达
UPDATE project1 SET CUST_CODE=rpad(CUST_CODE, 10, '0');
如果我是你,我会用一句话来表达
UPDATE project1 SET CUST_CODE=rpad(CUST_CODE, 10, '0');
如果您想用上面给出的SQL实现它,这是最好的方法,但是如果您想通过PLSQL实现它,您需要更正您的逻辑。
您正在对游标中检索的记录数运行循环,然后在每个记录后面附加一个零,即“0”,这正是您在代码中编写的内容
如果你想让它长到10那么
按如下方式实现它
IF LENGTH (a.CUST_CODE)<10
THEN
v_len = 10-length (a.cust_code-- declare a variable
for
i in 1..v_len
loop
v_pad=v_pad||'0';
end loop;
UPDATE project1
SET CUST_CODE=a.CUST_CODE|| v_pad
WHERE CUST_CODE=a.CUST_CODE;
END IF;
IF LENGTH(a.CUST_code)如果您想用上面给出的SQL实现它,这是最好的方法,但是如果您想通过PLSQL实现它,您需要更正您的逻辑。
您正在对游标中检索的记录数运行循环,然后在每个记录后面附加一个零,即“0”,这正是您在代码中编写的内容
如果你想让它长到10那么
按如下方式实现它
IF LENGTH (a.CUST_CODE)<10
THEN
v_len = 10-length (a.cust_code-- declare a variable
for
i in 1..v_len
loop
v_pad=v_pad||'0';
end loop;
UPDATE project1
SET CUST_CODE=a.CUST_CODE|| v_pad
WHERE CUST_CODE=a.CUST_CODE;
END IF;
如果长度(a.CUST_code)您可以使用rpad解决您的问题!下面是参考文档。
您可以使用rpad解决您的问题!下面是参考文档。
声明
光标dif为
选择客户代码、客户ID、合同编号、MSISDN
来自项目1;
v_温度编号;
开始
对于dif循环中的
v_温度:=10长度(a.CUST_代码)
如果长度(a.CUST_代码)声明
光标dif为
选择客户代码、客户ID、合同编号、MSISDN
来自项目1;
v_温度编号;
开始
对于dif循环中的
v_温度:=10长度(a.CUST_代码)
如果长度(a.CUST_代码)非常感谢!非常感谢!非常有用的函数(:谢谢。确实更简单。我尝试练习plsql,所以利用任何机会来写东西,尽管我似乎最好先关注sql…谢谢。谢谢。确实更简单。我尝试练习plsql,所以利用任何机会来写东西,尽管我似乎最好先关注sql…谢谢。没有恶魔关于如何使用rpad的分层这只是一个评论,不是一个答案。没有关于如何使用rpad的演示,这只是一个评论,不是答案。