Oracle-SQL代码
我正在尝试编写一个更新表上字段的过程。我是甲骨文的新手,但我认为我有了一个良好的开端 这是我的密码:Oracle-SQL代码,sql,oracle,procedure,Sql,Oracle,Procedure,我正在尝试编写一个更新表上字段的过程。我是甲骨文的新手,但我认为我有了一个良好的开端 这是我的密码: create or replace procedure UPDATETSTFLAG(iflag varchar2) IS uflag varchar2(1); BEGIN SELECT INITIAL_FLAG INTO uflag FROM chcohm.chs_skin_test WHERE INITIAL_FLAG
create or replace procedure UPDATETSTFLAG(iflag varchar2)
IS
uflag varchar2(1);
BEGIN
SELECT INITIAL_FLAG
INTO uflag
FROM chcohm.chs_skin_test
WHERE INITIAL_FLAG = 'I';
IF uflag = ' '
THEN update Initial_Flag = 'C'
END IF;
END;
我犯了错误,不知道该怎么办 首先。。。。但我也质疑UFLAG是否会等于“”。这意味着应用程序正在使用空字符串更新表。“”和NULL在Oracle中是相同的,但“”的问题更大。也许你的意思是如果UFLAG为空 正如其他人指出的,您从未使用IFLAG参数,如果CHS_SKIN_测试表中有多条记录,此过程也将失败。您需要向语句添加主键筛选器
CREATE OR REPLACE PROCEDURE UPDATETSTFLAG(IFLAG IN VARCHAR2)
IS
UFLAG VARCHAR2(1);
BEGIN
SELECT INITIAL_FLAG
INTO UFLAG
FROM CHCOHM.CHS_SKIN_TEST
WHERE INITIAL_FLAG = 'I';
IF UFLAG = ' ' THEN
UPDATE CHCOHM.CHS_SKIN_TEST
SET INITIAL_FLAG = 'C'
WHERE ** NEED TO HAVE A PRIMARY KEY HERE * = ** THE RECORD YOU NEED TO
UPDATE **;
END IF;
END;
错误是什么?至少是missng;更新命令和错误语法后。更新表\u name SET field\u name1=value1,其中field\u name2=value2。如果你根本不使用IFLAG参数,那么什么是IFLAG参数呢?请阅读以下内容:更具体地说:我得到的错误不是一个有意义的问题描述。你很清楚自己会犯什么错误,因为它们就在你面前的屏幕上。你懒得把它们包括在你的问题中,这太可笑了。你要求我们为你的问题免费贡献时间;你至少可以提供摆在你面前的细节,让我们更容易提供帮助。考虑到你选择了“WHERE INITIAL_FLAG='I',它到底怎么会带着除'I'之外的任何初始_FLAG值回来呢?好吧,这将有助于对过程有更多的了解。我有一个able,即使导入了数据,也不会更新初始_标志。因此,我所要做的就是将表上的初始_标志从'I'更新为'C'。我只是觉得我的思路不对。@Nette根据你所说的,这一切都可以作为一条sql语句来完成。
create or replace procedure UPDATETSTFLAG(iflag varchar2)
IS
BEGIN
uflag varchar2(1)
-- The value of @uflag will always be; 'I' or NULL
SELECT @uflag = Initial_Flag
FROM chcohm.chs_skin_test
WHERE INITIAL_FLAG = 'I'
-- This will never evaluate to TURE. See comment above.
IF @uflag = ' ' THEN
UPDATE chcohm.chs_skin_test
SET Initial_Flag = 'C'
WHERE INITIAL_FLAG = 'I'
END IF
END;