首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何循环不同类型的变量,将它们随机化并连接起来?

如何循环不同类型的变量,将它们随机化并连接起来?
EN

Stack Overflow用户
提问于 2016-02-22 00:05:17
回答 1查看 33关注 0票数 0

我遇到了一种情况,我必须为我们现有的数据库创建一个过程。举个例子:

SQL数据库有名字、姓氏、dateOfBirth和id字段。Id将使用firstName、lastName和dateOfBirth的组合创建,因为它将使用户选择如下:('James','Borg','10-11-2027')->系统将显示如下选择:

代码语言:javascript
复制
james_borg
james_12
james_borg_12
borg_12
borg_james
borg_james_12

到目前为止,我已经这样做了,没有循环。但我不知道怎么接近

代码语言:javascript
复制
CREATE OR REPLACE PROCEDURE GEN_LOGIN_ID
  (O_FNAME IN EMPLOYEE.FNAME%TYPE, 
   O_LNAME IN EMPLOYEE.LNAME%TYPE, 
   O_BDATE IN     EMPLOYEE.BDATE%TYPE)

IS
N_NUM NUMBER(20);
N_ID VARCHAR2(60); 
BEGIN

N_NUM:=(MONTHS_BETWEEN(SYSDATE, O_BDATE))/12;
N_ID:=CONCAT(O_FNAME,O_LNAME);
N_ID:=CONCAT(N_ID,N_NUM);
INSERT INTO POSSIBLE_IDS(ID) VALUES(N_ID);

COMMIT;


END;

如果我现在打电话给这个程序

代码语言:javascript
复制
 DECLARE
O_FNAME EMPLOYEE.FNAME%TYPE;
O_LNAME EMPLOYEE.LNAME%TYPE;
O_BDATE  EMPLOYEE.BDATE%TYPE;
BEGIN
GEN_LOGIN_ID('James','Borg','10-11-2027');

END;

结果是JamesBorg-12。需要助手吗?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2016-02-22 01:40:36

我没有看到任何随机化,但我可以看到一个模式。如何在变量或数组中分配这些模式,然后使用forall在表中插入这些值?下面是代码的另一个版本:

代码语言:javascript
复制
  CREATE OR REPLACE PROCEDURE GEN_LOGIN_ID
    (O_FNAME IN EMPLOYEE.FNAME%TYPE, 
     O_LNAME IN EMPLOYEE.LNAME%TYPE, 
     O_BDATE IN     EMPLOYEE.BDATE%TYPE)

  IS
     N_NUM NUMBER(20);
     N_ID VARCHAR2(60); 
     type myarray  is table of varchar2(250) index by pls_integer;
     arrayofnames myarray;
  BEGIN
     N_NUM:=(MONTHS_BETWEEN(SYSDATE, O_BDATE))/12;

     arrayofnames(1):= O_FNAME || '_' || O_LNAME;
     arrayofnames(2):= arrayofnames(1) || '_' || N_NUM;
     arrayofnames(3):= O_FNAME || '_' || N_NUM;

     arrayofnames(4):= O_LNAME || '_' || O_FNAME;
     arrayofnames(5):= arrayofnames(4) || '_' || N_NUM;
     arrayofnames(6):= O_LNAME || '_' || N_NUM;
     FORALL A IN 1..arrayofnames.count
        INSERT INTO POSSIBLE_IDS(ID) VALUES(arrayofnames(a));
     COMMIT;
  END;
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/35543780

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档