小编uda*_*rH3的帖子

在字符串中每3个字符后插入句点

我有这个:

from __future__ import print_function

def f_comma(p_string):
   v_string = p_string
   if (type(v_string) == type(int()) or type(v_string) == type(long()) or  
       type(v_string) == type(float())):
      v_string = str(v_string)
   else:   
      l_string = list(v_string)
      for v_index in range(3, len(l_string), 4):
         l_string.insert(v_index, ',')
      v_result = ''.join(l_string)
   return (v_result)

print (f_comma('qwertyuiopaq'))
Run Code Online (Sandbox Code Playgroud)

似乎我无法弄清楚为什么如果我使用超过11个字符的字符串,句点停止插入,但只有11个字符,它工作正常.我在这件作品中做错了什么?

python python-2.7

4
推荐指数
1
解决办法
4274
查看次数

循环索引变量使用在 PL/SQL 集合中无效

执行此操作后,我收到以下信息:

PL/SQL: ORA-00942: table or view does not exist
PLS-00364: loop index variable 'EMP_REC' use is invalid
Run Code Online (Sandbox Code Playgroud)

据说:

在块或子程序中,当您输入块或子程序时,将实例化用户定义的记录。当您退出块子程序时,它们将不再存在。”

现在我想我完全理解它在说什么,我想......但是话虽如此,我的 FOR 部分是否应该正常工作?(为什么不是?),因为正如我所看到的,整个事情发生在街区内而不是外面。因此,直到块退出之前,我认为 v_myrec 存在于 Oracle 服务器默认分配的私有内存的缓存或缓冲区中,因为毕竟 v_myrec 可以说是一个“表”,因此 DBMS 包应该能够打印我的“emp_rec.v_sal...”,在我的块执行成功完成后,然后 v_myrec 不再存在。我在这里有点困惑,有人能给我解释一下吗?

如果我全都错了,请纠正我。v

DECLARE
 TYPE t_rec IS RECORD
  (v_sal           NUMBER(8) NOT NULL := 0,
   v_min_sal       NUMBER(8) DEFAULT 1000,
   v_hire_date     employees.hire_date%TYPE,
   v_rec1          employees%ROWTYPE);
 v_myrec t_rec;  
BEGIN
 v_myrec.v_sal := v_myrec.v_min_sal + 500;
 v_myrec.v_hire_date := SYSDATE;
  SELECT *
  INTO v_myrec.v_rec1
  FROM employees
  WHERE employee_id = 100;
 DBMS_OUTPUT.PUT_LINE(v_myrec.v_rec1.last_name||' '||v_myrec.v_sal||
                      ' '||v_myrec.v_rec1.salary);

 FOR emp_rec IN …
Run Code Online (Sandbox Code Playgroud)

sql oracle plsql oracle11g

2
推荐指数
1
解决办法
3万
查看次数

用于初始化IN参数的UPPER函数未按预期工作

CREATE OR REPLACE PROCEDURE appraisal
  (p_grade IN VARCHAR2 := UPPER(' '))
IS
 v_appraisal VARCHAR2(20) := '';
BEGIN
 v_appraisal := CASE p_grade
     WHEN 'A' THEN 'Excellent'
     WHEN 'B' THEN 'Very good'
     WHEN 'C' THEN 'Bad'
     ELSE 'No such grade!'
     END;
 DBMS_OUTPUT.PUT_LINE('Grade:-'||p_grade ||' Appraisal:-'|| v_appraisal);
END;
/

EXECUTE appraisal('a');
Run Code Online (Sandbox Code Playgroud)

输出:

Grade:-a Appraisal:-No such grade!"
Run Code Online (Sandbox Code Playgroud)

我想知道为什么这不起作用 - 我做错了什么?

sql oracle oracle11g

0
推荐指数
1
解决办法
297
查看次数

标签 统计

oracle ×2

oracle11g ×2

sql ×2

plsql ×1

python ×1

python-2.7 ×1