我正在嘗試編寫一個SP,它使用存儲過程中的子字符串函數,並使用列名作爲輸入。然而,當我運行在存儲過程中使用內置int函數的sql server
exec sp_addCountySchoolDistrict N'table', N'districtCountySchoolCode'
它使用'districtCountySchoolCode'
爲子,而不是從該行的值...
例如
create table [dbo].[test] (districtCountySchoolCode nvarchar(100))
insert into dbo.test values ('1234567891234')
go
CREATE PROCEDURE sp_addCountySchoolDistrict
@tableName nvarchar(100),
@colName nvarchar(100)
AS
BEGIN
SET NOCOUNT ON;
DECLARE @Sql NVARCHAR(MAX);
SET @Sql= N'alter table ' + replace(replace(quotename(@tableName),']',''),'[','') +
N' add countyCode as ''' + substring(@colName, 1,2) + N',
districtCode as ''' + substring(@colName, 3,5) + N',
schoolCode as ''' + substring(@colName, 8,7) + N';'
select @sql;
EXECUTE sp_executesql @Sql
END
GO
exec sp_addCountySchoolDistrict N'[dbo].[test]', N'districtCountySchoolCode'
select * from test_copy
我不確定我是否理解你的問題.... – Kostis
當我運行SP時,它使用@colName而不是'1234567891234'的'districtCountySchoolCode' 實際查詢應該是'alter table [dbo]。爲試圖提供[測試] \t添加countycode作爲子字符串(districtCountySchoolCode,1,2), \t districtCode作爲子字符串(districtCountySchoolCode,3,5), \t schoolCode作爲子字符串(districtCountySchoolCode,8,7)' – spitfiredd
加1一個示例演示 – TheGameiswar