在PL SQL中,我正在编写一个使用DB链接的存储过程:
CREATE OR REPLACE PROCEDURE Order_Migration(us_id IN NUMBER, date_id in DATE)
as
begin
INSERT INTO ORDERS(order_id, company_id)
SELECT ORDER_ID_SEQ.nextval, COMPANY_ID
FROM ORDERS@SOURCE
WHERE USER_ID = us_id AND DUE_DATE = date_ID;
end;
Run Code Online (Sandbox Code Playgroud)
它会在特定日期由特定用户完成所有订单并将其插入新数据库中.它调用一个序列来确保订单上没有重复的PK,并且效果很好.
但是,我希望使用相同的过程对另一个将order_id作为外键的表执行第二次INSERT.所以我需要添加刚刚创建的所有order_id,以及来自SOURCE的匹配数据:
INSERT INTO ORDER_COMPLETION(order_id, completion_dt)
SELECT ????, completion_dt
FROM ORDER_COMPLETION@SOURCE
Run Code Online (Sandbox Code Playgroud)
如何跟踪刚刚创建的order_id与我需要从源数据库中提取数据的order_id相匹配?
我考虑制作一个临时表,但你不能在程序中创建它们.
其他信息:我将从我正在编写的C#应用程序中调用此过程
可以有两个具有相同递增顺序的表吗?
我试图做一棵树,ID, NAME, ParentID我必须加入两张桌子.如果我有不同的id,树方案ID - ParentId将无法正常工作.
Table A Table B
ID | NAME | PID ID | NAME | PID
1 | xpto | 0 1 | xpto | 1
Run Code Online (Sandbox Code Playgroud) 我正在尝试将词性功能的输出传递到index-words函数中,并使用( - >)线程宏打印结果输出:
(defn parts-of-speech []
(seq (. POS values)))
(defn index-words [pos]
(iterator-seq (. dict getIndexWordIterator pos)))
(-> (parts-of-speech) index-words println)
Run Code Online (Sandbox Code Playgroud)
但是index-words func返回一个iterator-seq,我不知道如何在这个上下文中迭代它,因为我是Clojure的新手.
编辑:根据建议更新代码.
更新:
感谢@kotarak和@ jayunit100的回答以及来自@ sw1nn和@ marko-topolnik的评论,我至少有两个有效的变体:
(->> (parts-of-speech) (map index-words) (map println) doall)
(doseq [w (map index-words (parts-of-speech))]
(println w))
Run Code Online (Sandbox Code Playgroud)
我来自一个命令性的背景,我的这个问题的目标是理解线程宏,试图编写更多惯用的Clojure(在尝试使用线程宏之前,我使用multiple doseq和lets 循环遍历每个序列).
从评论来看,似乎线程宏可能不是最惯用的方式,但我仍然希望看到如何使它工作,所以我可以填补这个理解的空白.
此外,(parts-of-speech)返回一个包含四个项目的序列,如果您执行a (println (count w))而不是(println w),则可以看到它打印四个序列的计数而不是一个连续序列:
(doseq [w (map index-words (parts-of-speech))]
(println (count w)))
;= 117798
;= 11529
;= 21479
;= 4481
Run Code Online (Sandbox Code Playgroud)
你如何修改上面的内容来打印一个连续的单词流而不是打印四个序列的内容?
BTW:上面的代码包含了MIT Java …
使用ejb3和Postgres插入数据时出现错误。但是使用原始SQL可以正常进行。
我的桌子是:
CREATE SEQUENCE vmb_mails_seq;
CREATE TABLE vmb_mails (
ID BIGINT DEFAULT nextval('vmb_mails_seq') PRIMARY KEY,
TITLE TEXT ,
FROM_ADDR VARCHAR(256),
DATE_ARRIVED TIMESTAMP,
BODY TEXT,
ENT_BY NUMERIC(20,0),
IS_DELETED NUMERIC(1,0),
DELETE_DATE TIMESTAMP,
MOD_BY NUMERIC(20,0),
IS_ACTIVE NUMERIC(1,0),
ENT_DATE TIMESTAMP,
MOD_DATE TIMESTAMP,
REACTIVE_DATE TIMESTAMP,
INACTIVE_DATE TIMESTAMP
);
ALTER SEQUENCE vmb_mails_seq OWNED BY vmb_mails.id;
Run Code Online (Sandbox Code Playgroud)
ejb3 实体是:
@Entity
@Table(name="vmb_mails")
@SequenceGenerator(name="Mails_Seq_Gen",sequenceName="vmb_mails_seq",allocationSize=1)
public class Mail implements Serializable
{
private long id;
private String title;
private String fromAddr;
private Date dateArrived;
// private Clob body;
private String body;
private …Run Code Online (Sandbox Code Playgroud) 应用此sql脚本:
create table software (
id bigint not null,
name varchar(255),
description varchar(255),
constraint pk_software primary key (id))
;
create sequence software_seq;
Run Code Online (Sandbox Code Playgroud)
然后这个:
alter sequence software_seq start with 1000;;
insert into software (id, name, description) values ( 1, 'Soft1', 'Description1');
Run Code Online (Sandbox Code Playgroud)
然后以编程方式(从java)插入新软件时,获得id = 24的新软件
为什么不用1001?由于'alter sequence software_seq以1000开头 ;'
我是python的新手,想要一个产生包含多个整数的列表的函数,即[1,3,5,7 ....],就像你可以用范围函数那样,即范围(1,21,2) .
但是,我没有设置上限,而是想设置列表的长度,所以我会在列表中说明我想要的起点,步长和整数.这样的功能存在吗?
我正在尝试使用JavaScript编写的脚本创建唯一标识符.我应用于这些标识符的约束如下:
我知道任何编程语言都不能表示真正的随机性.有些编程语言只是有一个库函数模拟"随机性",但我不认为任何语言实际上,实现了真正的随机性的想法.不过,让我们假装JavaScript Math.random()函数是随机性的最佳实现.
这是我到目前为止的JavaScript代码:
// the numbers in this array represent the utf-8 codes for the uppercase letters A-Z
var uppercaseLetters = new Array(65,66,67,68,69,70,71,72,73,74,75,76,77,78,
79,80,81,82,83,84,85,86,87,88,89,90);
// http://stackoverflow.com/questions/16753876/javascript-button-to-pick-random-item-from-array
var randomElement = uppercaseLetters[Math.floor(Math.random() *
uppercaseLetters.length)];
document.write(String.fromCharCode(randomElement));
convertedElement = String.fromCharCode(randomElement);
// document.write("<br /> <br />");
// borrowed String.fromCharCode from some part of the Mozilla developer website
// you can also see the utf-8 character set on wikipedia:
// http://en.wikipedia.org/wiki/UTF-8
/* for(var index = 0; index < 26; index++) { …Run Code Online (Sandbox Code Playgroud) 我想生成数字的向量(1:5),(1:5)+45依此类推
nums <- seq(1,22500,45)
rws <- c(1:5)
nums2 <- nums - 1
for (i in nums2[2:500]){
rwsx <- append(rws, rws+i)
rwsx}
Run Code Online (Sandbox Code Playgroud)
但循环只存储最新的附加,我得到:
1 2 3 4 5 22456 22457 22458 22459 22460
Run Code Online (Sandbox Code Playgroud) (初学者在这里)
我想知道如何找到第n个序列F [n] = F [n-1] + F [n-2].
输入:
F[0] = a;
F[1] = b;
a,b < 101
N < 1000000001
M < 8; M=10^M;
Run Code Online (Sandbox Code Playgroud)
a和b是起始序列号.
n是我需要找到的序列的第n个数.
M是模数,数字变得很快,因此F [n] = F [n]%10 ^ M,我们找到余数,因为只需要第n个数字的最后一位数字
递归方法太慢了:
int fib(int n)
{
if (n <= 1)
return n;
return fib(n-1) + fib(n-2);
}
Run Code Online (Sandbox Code Playgroud)
花费O(n)时间的动态编程解决方案也太慢了:
f[i] = f[i-1] + f[i-2];
Run Code Online (Sandbox Code Playgroud)
虽然如果序列的第一个数字是0和1(通过使用这个公式可以在O(log n)中找到第n个数字),如何更快地找到第n个数字的解决方案:
If n is even then k = n/2:
F(n) = [2*F(k-1) + F(k)]*F(k)
If n is odd then k = (n …Run Code Online (Sandbox Code Playgroud) 我有以下分配:计算给定字符中有多少“游程”出现在给定字符串中。“运行”是一个或多个相同字符的连续块。例如,如果字符串是“ AATGGGGCCGGTTGGGGGGGGGGGAAGC”,字符是“ G”,则返回4。 不导入,'?' 允许 我的尝试:
public static int charRunCount(String str, char c){
int counter = 0;
for (int i = 0; i < str.length()-1; i++) {
if ( (str.charAt (i) == str.charAt (i+1)) && str.charAt (i)==c )
counter+=1;
}
return counter;
}
Run Code Online (Sandbox Code Playgroud)
输出= 12,请帮助修复或更正。