저장 프로시저 테이프 사무, 연결 id, 반환 값
39861 단어 저장 프로시저
메 시 지 를 삭제 하면 답장 메 시 지 를 단계별 로 삭제 합 니 다. 이 때 우 리 는 다음 과 같은 사 무 를 사용 해 야 합 니 다. SQL
1 ALTER PROCEDURE [dbo].[proc_tb_leaveword_delete]
2 (
3 @leavewordID INT,
4 @record TINYINT OUTPUT
5 )
6 AS
7 BEGIN
8 BEGIN TRY
9 BEGIN TRANSACTION
10 DELETE FROM tb_leavewordID WHERE leavewordID=@leavewordID
11 DELETE FROM tb_reply WHERE leavewordID=@leavewordID
12 SET @record=0 --
13 COMMIT TRANSACTION
14 END TRY
15 BEGIN CATCH
16 ROLLBACK TRANSACTION
17 SET @record=-1 --
18 END CATCH
19 RETURN @record
20 END
하나의 뉴스 를 삭제 합 니 다. 하나의 뉴스 에 여러 개의 댓 글 이 있 을 수 있 습 니 다. 모든 댓 글 에 답장 메시지 가 있 을 수 있 습 니 다. 이때 우 리 는 하나의 뉴스 를 삭제 한 SQL 은 다음 과 같 습 니 다.
1 ALTER PROCEDURE [dbo].[proc_tb_news_delete]
2 (
3 @newsID INT,
4 @record TINYINT OUTPUT
5 )
6 AS
7 BEGIN
8 DECLARE @leavewordCount INT --
9 DECLARE @delete_where VARCHAR(4000) -- id , 1,2,4,5,6
10 SET @leavewordCount=(SELECT ISNULL(COUNT(1),0) FROM tb_leaveword WHERE newsID=@newsID)
11 SET @delete_where=''
12
13 IF(@leavewordCount=0) --
14 BEGIN TRY
15 DELETE FROM tb_news WHERE newsID=@newsID
16 SET @record=0 --
17 END TRY
18 BEGIN CATCH
19 SET @record=-1 --
20 END CATCH
21
22 ELSE IF(@leavewordCount>0) --
23 ---- (start)----
24 DECLARE MY_CURSOR CURSOR
25 FOR SELECT leavewordID FROM tb_news WHERE newsID=@newsID
26 BEGIN
27 DECLARE @leavewordID INT
28 OPEN MY_CURSOR
29 FETCH NEXT FROM MY_CURSOR INTO @leavewordID
30 IF(@leavewordID IS NOT NULL)
31 SET @delete_where=@delete_where+CAST(@leavewordID AS VARCHAR(10))+','
32 WHILE(@@FETCH_STATUS<>-1)
33 BEGIN
34 SET @leavewordID=NULL
35 FETCH NEXT FROM MY_CURSOR INTO @leavewordID
36 IF(@leavewordID IS NOT NULL)
37 SET @delete_where=@delete_where+CAST(@leavewordID AS VARCHAR(10))+','
38 END
39 END
40 CLOSE MY_CURSOR
41 DEALLOCATE MY_CURSOR
42 SET @delete_where=SUBSTRING(@delete_where,1,LEN(@delete_where)-1)
43 ---- (end)----
44 BEGIN
45 BEGIN TRY
46 BEGIN TRANSACTION
47 DELETE FROM tb_news WHERE newsID=@newsID
48 EXECUTE('DELETE FROM tb_leaveword WHERE leavewordID IN('+@delete_where+')')
49 EXECUTE('DELETE FROM tb_reply WHERE leavewordID IN('+@delete_where+')')
50 SET @record=0 --
51 COMMIT TRANSACTION
52 END TRY
53 BEGIN CATCH
54 ROLLBACK TRANSACTION
55 SET @record=-1 --
56 END CATCH
57 END
58 RETURN @record
59 END
뉴스 유형 을 삭제 할 때 이 유형 에 여러 개의 뉴스 가 있 을 수 있 습 니 다. 이 뉴스 에 여러 개의 댓 글 이 있 고 댓 글 에 여러 개의 답장 이 있 습 니 다. 순서대로 삭제 합 니 다. 다음 과 같은 저장 과정 입 니 다.
1 ALTER PROCEDURE [dbo].[proc_tb_news_type_delete]
2 (
3 @typeID INT,
4 @record TINYINT OUTPUT
5 )
6 AS
7 BEGIN
8 DECLARE @newsCount INT --
9 SET @newsCount=(SELECT ISNULL(COUNT(1),0) FROM tb_news WHERE typeID=@typeID)
10 IF(@newsCount=0) --
11 BEGIN TRY
12 DELETE FROM tb_news_type WHERE typeID=@typeID
13 SET @record=0 --
14 END TRY
15 BEGIN CATCH
16 SET @record=-1 --
17 END CATCH
18
19 ELSE IF(@newsCount>0) --
20 BEGIN TRY
21 BEGIN TRANSACTION
22 DECLARE MY_CURDOR CURSOR
23 FOR SELECT newsID FROM tb_news WHERE typeID=@typeID
24 BEGIN
25 DECLARE @newsID INT
26 OPEN MY_CURSOR
27 FETCH NEXT FROM MY_CURSOR INTO @newsID
28 IF(@newsID IS NOT NULL)
29 DELETE FROM tb_news_type WHERE typeID=@typeID
30 EXECUTE proc_tb_news_delete @newsID=@newsID --
31 WHILE(@@FETCH_STATUS<>-1)
32 BEGIN
33 SET @newsID=NULL
34 FETCH NEXT FROM MY_CURSOR INTO @newsID
35 IF(@newsID IS NOT NULL)
36 DELETE FROM tb_news_type WHERE typeID=@typeID
37 EXECUTE proc_tb_news_delete @newsID=@newsID --
38 END
39 END
40 CLOSE MY_CURSOR
41 DEALLOCATE MY_CURSOR
42 COMMIT TRANSACTION
43 END TRY
44 BEGIN CATCH
45 ROLLBACK TRANSACTION
46 SET @record=-1 --
47 END CATCH
48 RETURN @record
49 END
여러 개의 뉴스 유형 을 삭제 할 때 우 리 는 맞 춤 형 id 를 필요 로 한다. 예 를 들 어 1, 2, 4, 5, 12, 34. 저장 과정 에 들 어가 고 문 자 를 분할 하 는 SQL 문 구 는 다음 과 같다.
1 DECLARE @A VARCHAR(5000)
2 DECLARE @i INT
3 SET @A='A,B,C,D,D,S,X,C,C,C,D,AAAA,DDDDDD,DEF,ERT,'
4 SET @i=CHARINDEX(',',@A)
5
6 WHILE @i>=1
7 BEGIN
8 PRINT LEFT(@A,@i-1)
9 SET @A=SUBSTRING(@A,@i+1,LEN(@A)-1)
10 SET @i=CHARINDEX(',',@A)
11 END
여러 개의 뉴스 형식 을 삭제 합 니 다 SQL 은 다음 과 같 습 니 다.
1 ALTER PROCEDURE [dbo].[proc_tb_news_type_selects_delete]
2 (
3 @typeID_list VARCHAR(500),
4 @record TINYINT OUTPUT
5 )
6 AS
7 BEGIN
8 BEGIN TRY
9 BEGIN TRANSACTION
10 DECLARE @index INT
11 DECLARE @typeID INT
12 SET @typeID_list=RTRIM(LTRIM(@typeID_list))
13 SET @index=CHARINDEX(',',@typeID_list)
14 WHILE @index>=1
15 BEGIN
16 SET @typeID=CAST(LEFT(@typeID_list,@index-1) AS INT)
17 EXECUTE proc_tb_news_type_delete @typeID=@typeID
18 SET @typeID_list=SUBSTRING(@typeID_list,@index+1,LEN(@typeID_list)-1)
19 SET @index=CHARINDEX(',',@typeID_list)
20 END
21 COMMIT TRANSACTION
22 SET @record=0 --
23 END TRY
24 BEGIN CATCH
25 ROLLBACK TRANSACTION
26 SET @record=-1 --
27 END CATCH
28 RETURN @record
29 END
대문자 문자열 무 작위 생 성
대문자 65 - 90 소문 자 97 - 122
DECLARE @random INT
DECLARE @i INT
DECLARE @az VARCHAR(8)
SET @i=1
SET @az=CHAR(FLOOR(RAND()*26)+65)
WHILE @i<8
BEGIN
SET @i=@i+1
SET @az=@az+CHAR(FLOOR(RAND()*26)+65)
END
PRINT @az
전재 가 필요 하 시 면 출처 를 밝 혀 주 십시오.
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
sql 데이터베이스 잠 금 처리 저장 과정텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.