Sql 如何根据我编写的函数,使用不同的值更新表中所有行的列?
我有一个表,我想更新所有行的列Sql 如何根据我编写的函数,使用不同的值更新表中所有行的列?,sql,vb.net,Sql,Vb.net,我有一个表,我想更新所有行的列tempID(现在为空) 该表已经有多条记录 我想用从函数生成的字符串(随机)更新每一行 tempID Name Address null xyz asdf null abc asdfds 我想更新该表,使其如下所示: tempID Name Address emp101 xyz asdf emp102 abc asdfds 这就像在exc
tempID
(现在为空)
该表已经有多条记录
我想用从函数生成的字符串(随机)更新每一行
tempID Name Address
null xyz asdf
null abc asdfds
我想更新该表,使其如下所示:
tempID Name Address
emp101 xyz asdf
emp102 abc asdfds
这就像在excel上输入数据并导出到此表后为员工分配id一样。您可以在下面的代码段中尝试。我尝试使用ORA_散列值来生成随机唯一标识符。希望这有帮助
alter session set NLS_LENGTH_SEMANTICS = CHAR;
CREATE TABLE emp_tab
(
empid VARCHAR2(100),
name VARCHAR2(100),
Address VARCHAR2(1000)
);
INSERT INTO emp_tab
SELECT NULL,'Avrajit'||level,'PUNE'||level FROM dual CONNECT BY level < 10;
CREATE OR REPLACE
FUNCTION gen_random_empid(
emp_name IN VARCHAR2)
RETURN VARCHAR2
AS
emp_id VARCHAR2(100);
begin
SELECT 'Emp'||ora_hash(emp_name) INTO emp_id FROM dual;
return emp_id;
end;
UPDATE emp_tab SET empid = gen_random_empid(NAME);
SELECT * FROM emp_tab;
alter session set NLS\u LENGTH\u SEMANTICS=CHAR;
创建表emp_选项卡
(
empid VARCHAR2(100),
名称VARCHAR2(100),
地址:VARCHAR2(1000)
);
插入emp_选项卡
从dual CONNECT BY level<10中选择NULL、'Avrajit'| | level、'PUNE'| | level;
创建或替换
函数gen_random_empid(
在VARCHAR2中的emp_名称)
返回VARCHAR2
作为
emp_id VARCHAR2(100);
开始
从dual中选择Emp'|| ora|u hash(Emp_名称)进入Emp_id;
返回emp_id;
结束;
更新emp\U选项卡设置empid=gen\U random\U empid(名称);
从emp_选项卡中选择*;
您可以尝试下面的代码片段。我尝试使用ORA_散列值来生成随机唯一标识符。希望这有帮助
alter session set NLS_LENGTH_SEMANTICS = CHAR;
CREATE TABLE emp_tab
(
empid VARCHAR2(100),
name VARCHAR2(100),
Address VARCHAR2(1000)
);
INSERT INTO emp_tab
SELECT NULL,'Avrajit'||level,'PUNE'||level FROM dual CONNECT BY level < 10;
CREATE OR REPLACE
FUNCTION gen_random_empid(
emp_name IN VARCHAR2)
RETURN VARCHAR2
AS
emp_id VARCHAR2(100);
begin
SELECT 'Emp'||ora_hash(emp_name) INTO emp_id FROM dual;
return emp_id;
end;
UPDATE emp_tab SET empid = gen_random_empid(NAME);
SELECT * FROM emp_tab;
alter session set NLS\u LENGTH\u SEMANTICS=CHAR;
创建表emp_选项卡
(
empid VARCHAR2(100),
名称VARCHAR2(100),
地址:VARCHAR2(1000)
);
插入emp_选项卡
从dual CONNECT BY level<10中选择NULL、'Avrajit'| | level、'PUNE'| | level;
创建或替换
函数gen_random_empid(
在VARCHAR2中的emp_名称)
返回VARCHAR2
作为
emp_id VARCHAR2(100);
开始
从dual中选择Emp'|| ora|u hash(Emp_名称)进入Emp_id;
返回emp_id;
结束;
更新emp\U选项卡设置empid=gen\U random\U empid(名称);
从emp_选项卡中选择*;
我已经解决了。我所做的是我分配了一个正常的序列号1,2,3。。。在从excel工作表导出时使用tempID,然后像这样更新查询
Dim upsql=“Update tb_Tempmember set tempID=”&generatenextid()&“where tempID=”&CStr(mysequenceid)&“”
这是循环中的
谢谢你的支持 我已经解决了。我所做的是我分配了一个正常的序列号1,2,3。。。在从excel工作表导出时使用tempID,然后像这样更新查询 Dim upsql=“Update tb_Tempmember set tempID=”&generatenextid()&“where tempID=”&CStr(mysequenceid)&“” 这是循环中的
谢谢你的支持 请给我们一些输入数据和预期的输出。您使用的是VB.NET,愚蠢的方法是使用循环。首先自己尝试,或者通过提供我已编辑的问题来增强您的问题,请检查您的示例结果是否非常随机。无论是随机的还是按顺序的,都无关紧要,但我要求将该id分配并更新给员工。我尝试了循环,生成了id,但在更新查询时,id没有相应地更新。我在想我应该在where子句中加什么。Dim upsql=“更新tb_Tempmember set tempID=”&id&“'请给我们一些输入数据和预期的输出。您使用的是VB.NET,愚蠢的做法是使用循环。首先自己尝试,或者通过提供我已编辑的问题来增强您的问题,请检查您的示例结果是否非常随机。无论是随机的还是按顺序的,都无关紧要,但我要求将该id分配并更新给员工。我尝试了循环,生成了id,但在更新查询时,id没有相应地更新。我在想我应该在where子句中加什么。Dim upsql=“Update tb_Tempmember set tempID=”&id&“谢谢您的尝试,但这不是我想要的答案。实际上,在我的vb.net代码中,我想从我自己生成的函数中更新id,然后对表的每一行更新tempID,如下所示。Dim upsql=“Update tb_Tempmember set tempID=”&GetNextid()谢谢你的尝试,但这不是我想要的答案。实际上,在我的vb.net代码中,我想从我自己生成的函数中更新id,然后对表的每一行更新tempID,如下所示。Dim upsql=“Update tb_Tempmember set tempID=”&GetNextid()