728x90
앞서 글에서 서브쿼리가 포함된 반복 쿼리에 대해 chatGPT에 도움 받아 데이터 쿼리후 삭제하는 것을 만들어 보았습니다.
Please convert one more time.
declare @c_id1 varchar(20), @c_site1 varchar(20)
set @c_id='id34'
set @c_site1 = 'AU'
select * from table where id =@c_id and site_id = @c_site1
그래서 나온 결과가 ..
DECLARE
c_id1 VARCHAR2(20);
c_site1 VARCHAR2(20);
BEGIN
c_id1 := 'id34';
c_site1 := 'AU';
SELECT * FROM table_name WHERE id = c_id1 AND site_id = c_site1;
END;
![](https://t1.daumcdn.net/keditor/emoticon/friends1/large/010.gif)
일단 이해는 되어 복잡하게 변형하여 봅니다. 서브 쿼리한 결과를 변수로 받는 것이죠.
DECLARE
CUST_NO1 VARCHAR2(20);
SITE_CD1 vARCHAR2(20);
AY_SEQ1 VARCHAR2(20);
D_ST_SEQ1 VARCHAR2(20);
BEGIN
CUST_NO1 := 'cook';
SITE_CD1 := 'A';
AY_SEQ1 := (SELECT AY_SEQ FROM ML.AY_DETAIL
WHERE CUST_NO = CUST_NO1 AND SITE_CD = SITE_CD1 );
다듬어 달라고 하니 예외처리 문을 넣어주네요
DECLARE
CUST_NO1 VARCHAR2(20);
SITE_CD1 VARCHAR2(20);
AY_SEQ1 VARCHAR2(20);
D_ST_SEQ1 VARCHAR2(20);
BEGIN
CUST_NO1 := 'cook';
SITE_CD1 := 'A';
SELECT AY_SEQ, D_ST_SEQ
INTO AY_SEQ1, D_ST_SEQ1
FROM ML.AY_DETAIL
WHERE CUST_NO = CUST_NO1 AND SITE_CD = SITE_CD1;
-- Now you can use AY_SEQ1 and D_ST_SEQ1 for further processing if needed -- ...
DBMS_OUTPUT.PUT_LINE('AY_SEQ1: ' || AY_SEQ1);
DBMS_OUTPUT.PUT_LINE('D_ST_SEQ1: ' || D_ST_SEQ1);
EXCEPTION
WHEN NO_DATA_FOUND THEN
DBMS_OUTPUT.PUT_LINE('No data found for the given criteria.');
WHEN OTHERS THEN
DBMS_OUTPUT.PUT_LINE('An error occurred.');
END; /
결론적으로 into를 넣어주는 게 mssql과 큰 차이점인 것 같다.
보통 mssql에서는 스토어프로시져는 만들어 간편하게 사용하는데 오라클도 가능한지 물었더니
CREATE OR REPLACE PROCEDURE DeleteAndDisplayValue
( p_input_value1 IN VARCHAR2,
p_input_value2 IN VARCHAR2
) IS
v_sequence_value NUMBER;
v_table2_value NUMBER;
BEGIN
-- Find specific sequence value in Table 1
SELECT sequence_column INTO v_sequence_value
FROM table1
WHERE some_column = p_input_value1;
-- Find value in Table 2 based on input value
SELECT table2_column INTO v_table2_value
FROM table2
WHERE another_column = p_input_value2;
-- Delete value from Table
DELETE FROM table2
WHERE another_column = p_input_value2;
-- Display the results
DBMS_OUTPUT.PUT_LINE( 'Sequence Value: ' || v_sequence_value);
DBMS_OUTPUT.PUT_LINE( 'Table 2 Value: ' || v_table2_value);
COMMIT; -- Commit the changes
EXCEPTION
WHEN NO_DATA_FOUND THEN
DBMS_OUTPUT.PUT_LINE( 'No data found.');
WHEN OTHERS THEN
DBMS_OUTPUT.PUT_LINE( 'An error occurred.');
ROLLBACK; -- Rollback changes in case of error
END DeleteAndDisplayValue;
나왔는데 ... 권한이 없어서 그런지 생성이 안된다. 그리고 작성된 스토어 프로시져는 아래처럼 실행하면 된다고 한다.
BEGIN
DeleteAndDisplayValue('input_value1','input_value2');
END;
아직은 오라클이 mssql만큼 쉽지 않다. 확 와닫지 않는다.
![](https://t1.daumcdn.net/keditor/emoticon/friends1/large/011.gif)
오라클 강의를 들어야 하나? 의문이다.
728x90
'낙서장 > chatGPT' 카테고리의 다른 글
chatGPT가 알려주는 chatGPT의 구조 및 비중 (0) | 2023.08.23 |
---|---|
chatGPT에게 chatGPT를 묻다 너는 누구니~ 그리고 구글 거니? (0) | 2023.08.23 |
chatGPT가 제안하는 광기에서 의미찾기 : 넌센스 속에서 아이디어 공개 (2) | 2023.08.23 |
chatGPT가 알려주는 지속적이고 균형잡힌 '게으름' (0) | 2023.08.22 |
chatGPT가 풀어 주는 반도체 이야기 2 (0) | 2023.08.19 |