我目前面臨一種奇怪的情況。T-SQL替換函數問題
我正在將一個查詢中的現有存儲過程的代碼收集到TMP
表中。
表:
##SPListAndCode
(
Code nVarchar(MAX)
)
查詢:
INSERT INTO ##SPListAndCode
SELECT OBJECT_DEFINITION (OBJECT_ID('SPname')))
我試圖取代值從創建查詢來獲取之後,修改查詢
REPLACE(CODE, 'CREATE PROCEDURE', 'ALTER PROCEDURE')
但問題是這樣的: REPLACE
函數不會替換值。
但是,當我試圖使用
REPLACE(CODE, 'CREATE', 'ALTER')
功能按預期工作。
但這種情況下是不適合我接受,因爲在存儲過程中可以有東西像裏面的「代碼」列
CREATE TABLE
示例數據:
/****** Object: StoredProcedure dbo.spName Script Date: 6/20/2016 9:10:18 PM ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
CREATE PROCEDURE dbo.spName
AS
DECLARE @pStartDate date, @x int
SET @pStartDate = (SELECT max(CT_ACTIVITY_DATE) FROM Table)
...
感謝很多提前任何形式的支持!
你是如何填充'## SPListAndCode' – Tanner
'REPLACE'應該已經做到了。但要調試更多,請向我們展示代碼 - 1.您在哪裏填充## SPListAndCode,2.您的查詢是否爲REPLACE'字符串/關鍵字 – Abhishek
@Tanner 添加了用於填充## SPListAndCode的代碼。 –