我目前面临一种奇怪的情况。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的代码。 –