从文本文件向sql查询提供输入
我使用下面的sql查询来更新表中的一条记录,该表从用户处获取输入从文本文件向sql查询提供输入,sql,oracle,plsql,Sql,Oracle,Plsql,我使用下面的sql查询来更新表中的一条记录,该表从用户处获取输入 SET SERVEROUTPUT ON SIZE 1000000 SPOOL D:\FC_USER_UNLOCK.TXT ACCEPT USER PROMPT 'ENTER USER_ID: ' DECLARE ANY_USER_FOUND NUMBER; BEGIN SELECT COUNT(*) INTO ANY_USER_FOUND FROM SM_USER_PROFILE S WHERE S.COD_U
SET SERVEROUTPUT ON SIZE 1000000
SPOOL D:\FC_USER_UNLOCK.TXT
ACCEPT USER PROMPT 'ENTER USER_ID: '
DECLARE
ANY_USER_FOUND NUMBER;
BEGIN
SELECT COUNT(*)
INTO ANY_USER_FOUND
FROM SM_USER_PROFILE S
WHERE S.COD_USER_ID='&USER' AND ROWNUM <= 1;
IF (ANY_USER_FOUND > 0) THEN
UPDATE SM_USER_PROFILE S
SET S.FLG_LOGIN_STATE='N'
, S.CTR_NO_FAILED_DAY=0
, S.CTR_NO_FAILED_SEQ=0
, S.FLG_STATUS='E'
WHERE S.COD_USER_ID='&USER';
COMMIT;
DBMS_OUTPUT.PUT_LINE('USER UNLOCKED SUCCESSFULLY...!!!');
ELSE
DBMS_OUTPUT.PUT_LINE('ENTERED USER DOES NOT EXIST..PLZ TRY AGAIN...!!!');
END IF;
END;
/
SPOOL OFF
EXIT;
将服务器输出设置为1000000大小
假脱机D:\FC\u USER\u UNLOCK.TXT
接受用户提示“输入用户\u ID:”
声明
任何用户找到的号码;
开始
选择计数(*)
进入找到的任何用户
来自SM_用户_配置文件
其中S.COD_USER_ID='&USER'和ROWNUM 0)然后
更新SM_用户_配置文件
设置S.FLG\u登录\u状态='N'
,S.CTR\u否\u失败\u天=0
,S.CTR_否_失败_SEQ=0
,S.FLG_STATUS='E'
其中S.COD_USER_ID='&USER';
犯罪
DBMS_OUTPUT.PUT_LINE('USER UNLOCKED SUCCESSFULLY…!!!');
其他的
DBMS_OUTPUT.PUT_LINE('输入的用户不存在..请重试…!!!');
如果结束;
终止
/
关闭
出口
上面的操作很好,但现在我需要通过从文本文件中获取一个输入(即用户id)来更新表,它可以是一个或多个用户id
所以请帮我解决这个问题
“现在我需要通过从数据库中获取一个输入,即用户id来更新表
“文本文件”
PL/SQL是一种服务器端语言,它不能很好地与用户交互。因此,您的选择是:
.bat
文件)来读取用户ID列表,并将它们一次提交到您已有的脚本版本中BEGIN
UPDATE SM_USER_PROFILE S
SET S.FLG_LOGIN_STATE='N'
, S.CTR_NO_FAILED_DAY=0
, S.CTR_NO_FAILED_SEQ=0
, S.FLG_STATUS='E'
WHERE S.COD_USER_ID='&USER';
if sql%rowcount > 0 then
COMMIT;
DBMS_OUTPUT.PUT_LINE('USER UNLOCKED SUCCESSFULLY...!!!');
else
DBMS_OUTPUT.PUT_LINE('ENTERED USER DOES NOT EXIST..PLZ TRY AGAIN...!!!');
end if;
END;
/
这个文本文件的结构如何?也许你可以使用一个“外部表”,看看UTL_文件包,它允许PL/SQL代码打开读取和写入外部文件。祝你好运。文本文件的结构将在用户id的单列中。