oracle序列已经创建了。 现在我要插入的时候id为自动增长 ,insert的时候插入怎么写?

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了oracle序列已经创建了。 现在我要插入的时候id为自动增长 ,insert的时候插入怎么写?相关的知识,希望对你有一定的参考价值。

直接 序列号.nexvalues不行的。。
错误消息

调用代码:
begin
SP_T_mac_Info('123','321','1','0',sysdate,'N','demo',sysdate,SEQ_list.Nextval,'a');
END;

参考技术A SQL> CREATE SEQUENCE test_sequence2
2 increment by 1 -- 每次递增1
3 start with 1 -- 从1开始
4 nomaxvalue -- 没有最大值
5 minvalue 1 -- 最小值=1
6 NOCYCLE; -- 不循环

Sequence created.

SQL> CREATE TABLE test_create_tab2 (
2 id INT,
3 val VARCHAR(10),
4 PRIMARY KEY (id)
5 );

Table created.

SQL> CREATE OR REPLACE TRIGGER BeforeTestCreate2Insert
2 BEFORE INSERT ON test_create_tab2
3 FOR EACH ROW
4 BEGIN
5 SELECT test_sequence2.nextval INTO :new.id FROM dual;
6 END;
7 /

Trigger created.

SQL> INSERT INTO test_create_tab2(val) VALUES ('NO id');

1 row created.

SQL> INSERT INTO test_create_tab2(id, val) VALUES (1, 'id no use');

1 row created.

SQL> SELECT * FROM test_create_tab2;

ID VAL
---------- --------------------
1 NO id 2 id no use追问

请问可以加下您QQ吗

参考技术B insert into 表 values(id.nextval) //不是id.nexvalues,ok?还有 lz最好提问时贴错误,或你的代码,这个sql语句只要正确不可能不行 只可能lz写错了,果断要求贴代码和贴图追问

错误消息

 

调用代码:

begin

 

SP_T_mac_Info('123','321','1','0',sysdate,'N','demo',sysdate,SEQ_list.Nextval,'a');

END;

参考技术C 序列是结合触发器使用的
CREATE OR REPLACE TRIGGER TBLPOWERFACTORVALUELIMIT_TRIG
BEFORE INSERT ON TBLPOWERFACTORVALUELIMIT
REFERENCING OLD AS OLD NEW AS NEW FOR EACH ROW
DECLARE
BEGIN
SELECT TBLPOWERFACTORVALUELIMIT_SEQ.NEXTVAL INTO :NEW.LIMITID FROM DUAL;
END;
参考技术D 贴错误消息啊

C++ 插入排序,冒泡排序和选择排序

大学的时候学过C,现在已经忘得七七八八了,现在想再学一下C/C++。

刚试着重写/温习了3个最简单的排序算法。

插入排序:依次将右边未排序的元素插入到左边已排序序列的合适位置。

时间复杂度:O(n^2)

float* sort_insertion(float a[], int len_a){ /*插入排序 类似我们排序扑克牌*/ for(int i=1; i < len_a; i++) { float to_insert = a[i]; // 索引0到 i-1 已排好序 int j; for(j = i-1; a[j] > to_insert and j >=0 ; j--) a[j+1] = a[j];//大的往后退一位 a[j+1] = to_insert;//a[j] > to_insert 不成立时 j+1的值即是待插入的位置 } return a;}


冒泡排序和选择排序大学都学过,不再赘述。

冒泡排序:

时间复杂度O(n^2)

float* sort_bubble(float a[], int len_a){ /*冒泡排序 依次比较相邻的两个元素,如果顺序错误就将它们的位置交换 */ float temp; for(int i=0; i < len_a-1; i++) { for(int j =0 ;j<len_a-1-i; j++) { if (a[j] > a[j+1]) { temp = a[j]; a[j] = a [j+1]; a[j+1] = temp; } } } return a;}


选择排序:

时间复杂度O(n^2)

float* sort_selection(float a[], int len_a){ /*选择排序 依次将左边未排序序列中的最大元素,存放到右边已排序序列的左端 */ int j; float temp; for(int i= len_a-1; i >= 0; i--) { //未排序序列:a[0]到a[i] //找到未排序序列的最大元素的位置 int maxIndex = 0; for(j=1; j <= i; j++) { if (a[j] > a[maxIndex]) maxIndex = j; } //交换 temp = a[i]; a[i] = a[maxIndex]; a[maxIndex] = temp; } return a;}


随机数组生成部分的代码如下:

#include <iostream>#include <time.h>using namespace std;float* sort_insertion(float a[], int len_a);float* sort_bubble(float a[], int len_a);float* sort_selection(float a[], int len_a);
int main(){ const int len_b =100; float b[len_b]; //int len_b = sizeof(b)/sizeof(b[0]);//求数组长度 srand(time(NULL)); //srand()设置随机种子seed, seed 随时间变化 for (int i=0; i<len_b; i++) { b[i] = rand()%101 -50.0f;//随机数 -50 到 50 //cout <<b[i]<<endl; } sort_bubble(b,len_b); //cout<<endl; for (int i=0;i<len_b;i++) cout<<b[i]<<endl; return 0;}


以上是关于oracle序列已经创建了。 现在我要插入的时候id为自动增长 ,insert的时候插入怎么写?的主要内容,如果未能解决你的问题,请参考以下文章

Oracle一次插入多条记录时,如何给定主键?

C++ 插入排序,冒泡排序和选择排序

将 Oracle 序列 Nextval 返回到 C# 变量中

Oracle 序列的创建删除插入

Oracle 触发器实现主键自增

oracle自增长