เขียน stored procedure sql server บวกจำนวนตัวเลขแบบมีเงื่อนไข
คุณจะทำอะไร? Bill มันมีที่มาและที่ไปอย่างไร? มีผลกับบัญชีไหม? (รายการทางด้านบัญชี)
...
...
...
Date :
2019-07-30 20:16:34
By :
หน้าฮี
No. 2
Guest
การเขียน Store Procedure ไม่ว่าจะเขียนบนฐานข้อมูลอะไรก็ตาม หลักการมันก็เหมือนเดิม
ดึงหมอยยังยากเสียยิ่งกว่า
Code (SQL)
DECLARE @databases TABLE(PK INT IDENTITY(1, 1), DatabaseID INT, Name VARCHAR(100), Server VARCHAR(100));
-- insert a bunch rows into @databases
--/*
INSERT INTO @databases (DatabaseID, Name, Server) SELECT 1, 'MainDB', 'MyServer1';
INSERT INTO @databases (DatabaseID, Name, Server) SELECT 1, 'MyDB', 'MyServer2';
INSERT INTO @databases (DatabaseID, Name, Server) SELECT 1, 'MyDB', 'MyServer2';
--*/
--SELECT @maxPK = MAX(PK) FROM @databases;
DECLARE @maxPK INT= (SELECT MAX(PK) FROM @databases);
--SET @pk = 1;
DECLARE @pk INT= 1;
DECLARE @DatabaseID INT, @Name VARCHAR(15), @Server VARCHAR(15);
DECLARE @ResetRowCount INT;
WHILE @pk <= @maxPK
BEGIN
SET NOCOUNT ON; -- Command(s) completed successfully.
--SET NOCOUNT OFF; -- returning the number rows affected in the execution of the query. IN TAB Messages
/* Get one record (you can read the values into some variables) */
SELECT @DatabaseID = DatabaseID, @Name = Name, @Server = Server FROM @databases WHERE PK = @pk;
--SELECT DatabaseID, Name, Server FROM @databases WHERE PK = @pk;
/* Do some processing here */
/* ... */
IF @@ROWCOUNT > 0 -- affected by the last statement SELECT, INSERT, UPDATE, DELETE
--PRINT @@ROWCOUNT ; -- IF Can Reset @ROWCOUNT = 0
BEGIN
UPDATE @databases SET Server = Server + '_' + CAST(@Name AS VARCHAR(15)) WHERE PK = @PK;
--IF @@ROWCOUNT > 0
-- BEGIN
-- DECLARE @Fake INT;
-- PRINT @@ROWCOUNT ;
-- END;
SELECT @ResetRowCount = 0 WHERE 1=2 --Reset @@ROWCOUNT To 0
END;
PRINT @@ROWCOUNT ;
SELECT @pk = @pk + 1;
--PRINT @@ROWCOUNT ; -- 1
--PRINT @pk - 1;
END;
SELECT *
FROM @databases;
Date :
2019-07-30 20:24:41
By :
หน้าฮี
No. 3
Guest
ถ้าคุณคิดทันผม หมายความว่า ผมจะไม่เขียน Store Procedure ฝังลงไปในฐานข้อมูล
แต่ผมจะเขียนเป็น Dynamic Store Procedure (เขียนเสร็จ/ใช้เสร็จ แล้วลบทิ้งแบบไม่อาลัยอาวรณ์)