我正在尝试从以下光标中获取两条信息: 1.子域名 2.域名
这个脚本运行良好,只是子域的输出只是一个字母和第一个字母。 所以我们假设域ID 2的子域是“abc.123domain.com”,我的结果是“a”。
知道我在这里做错了吗?我应该使用不同的数据类型吗?
USE testDatabase
declare @sql nvarchar(500)
declare @domainID int
declare @subDomain nvarchar(200)
DECLARE @NewLineChar AS CHAR(2) = CHAR(13) + CHAR(10)
declare domainIDCursor CURSOR
FOR
select domainID from tblDOMAINS
OPEN domainIDCursor
FETCH next from domainIDCursor into @domainID
WHILE @@FETCH_STATUS = 0
BEGIN
set @sql = N' use tblDOMAIN' + convert(nvarchar, @domainID) + @NewLineChar +
+ ' select @subDomain = (select subDomain from tblLocalDomainInfo (nolock))'
execute sp_executesql @sql, N'@subDomain nvarchar output', @subDomain output
print 'subDomain is ' + @subDomain + ' and the domainID is ' + convert(nvarchar,@domainID)
FETCH NEXT from domainIDCursor into @domainID
END
CLOSE domainIDCursor
DEALLOCATE domainIDCursor
答案 0 :(得分:1)
您未在此处convert(nvarchar, @domainID)
或此处N'@subDomain nvarchar output'
提供尺寸。
答案 1 :(得分:1)
问题在这里: -
execute sp_executesql @sql, N'@subDomain nvarchar output', @subDomain output
应该是
execute sp_executesql @sql, N'@subDomain nvarchar(200) output', @subDomain output
另见
declare @ID int
Set @ID = 1000
Select CONVERT(varchar, @ID) --output 1000
Select CONVERT(nvarchar, @ID) --output 1000