Add Debug Information (編譯帶調試符號)。Test → 彈出測試窗口。Start Debugger (F9) → 單步 Step Into (F11) / Step Over (F10)。Variables / Call Stack 窗口實時查看變量值。CREATE TABLE #Debug (Step VARCHAR(50), Val SQL_VARIANT, Ts DATETIME DEFAULT GETDATE());
INSERT INTO #Debug SELECT 'BeforeCalc', @Var1;
-- ... 邏輯 ...
INSERT INTO #Debug SELECT 'AfterCalc', @Var1;
SELECT * FROM #Debug;
DECLARE @Sql NVARCHAR(MAX), @Msg NVARCHAR(MAX);
SET @Sql = N'UPDATE t SET c = ' + QUOTENAME(@Val, '''') + ' WHERE id = ' + CAST(@Id AS VARCHAR);
PRINT @Sql; -- 查看生成的 SQL
EXEC sp_executesql @Sql;
類型轉換:PRINT CONVERT(VARCHAR(20), @IntVar)、PRINT CONVERT(VARCHAR(23), @DateTimeVar, 121)。
| 場景 | Oracle (PL/SQL) | SQL Server (T-SQL) |
|---|---|---|
| 自定義錯誤碼返回 | OUT 參數 p_err_code NUMBER + p_err_msg VARCHAR2 | 返回值 RETURN @err_code 或 OUTPUT 參數 |
| 嚴重錯誤中止 | RAISE_APPLICATION_ERROR(-20001, 'msg'); | RAISERROR('msg', 16, 1); RETURN; |
| 異常捕獲 | EXCEPTION WHEN OTHERS THEN ... | BEGIN TRY ... END TRY BEGIN CATCH ... END CATCH |
| 全局錯誤變量 | SQLCODE, SQLERRM | @@ERROR (語句級), ERROR_NUMBER() (CATCH 內) |
| 事務控制 | 隱式事務,COMMIT/ROLLBACK 顯式 | 隱式事務,SET XACT_ABORT ON 建議 |
ERR_PKG,封裝 LOG_ERROR、RAISE_BIZ_EXCEPTION。TRY/CATCH、XACT_ABORT、參數驗證、統一返回碼結構。