问题描述
我在创建复杂类型时从实体框架收到此错误。他们中的可能会告诉用户 SET FMTONLY OFF
但对我来说它不起作用。存储过程正在返回列,但它返回的列不是固定的。它有时会返回一个包含 2 列或 4 列的表。我正在使用实体框架 5.0。任何帮助将不胜感激
SET FMTONLY OFF
GO
ALTER PROCEDURE [dbo].[sp_hcube_rack]
@hcapmaxmodule int
AS
BEGIN
DECLARE @col_name varchar(1055)
DECLARE @count int,@cnt int
DECLARE @col varchar(255),@cmd nvarchar(1000)
DECLARE @ParmDeFinition nvarchar(500);
DECLARE getinfo CURSOR FOR
SELECT c.name
FROM sys.tables t
JOIN sys.columns c ON t.Object_ID = c.Object_ID
WHERE t.Name = 'Hydrcube_rack_mapping'
OPEN getinfo
FETCH NEXT FROM getinfo INTO @col
CREATE TABLE #column_tbl (ID INT,tempuserName varchar(MAX))
SET @cnt = 1
WHILE @@FETCH_STATUS = 0
BEGIN
SELECT @cmd = N'SELECT @count = COUNT(*)
FROM Hydrcube_rack_mapping
WHERE Hcap_modules = ' + CAST(@hcapmaxmodule AS nvarchar(20)) +
' AND ['+@col+'] IS NULL'
EXEC sp_executesql @cmd,@ParmDeFinition = N'@count INT OUTPUT',@count = @count OUTPUT;
IF (@count = 0)
BEGIN
SET @col_name = CONCAT(@col,',@col_name)
INSERT INTO #column_tbl (ID,tempuserName)
VALUES (@cnt,@col_name)
SET @cnt = @cnt + 1
END
FETCH NEXT FROM getinfo into @col
END
CLOSE getinfo
DEALLOCATE getinfo
SELECT TOP 1 @col_name = tempuserName
FROM #column_tbl
ORDER BY ID DESC
SELECT @cmd = 'SELECT ' + LEFT(@col_name,LEN(@col_name) - 1) +
' FROM Hydrcube_rack_mapping ' +
' WHERE Hcap_modules = ' + CAST(@hcapmaxmodule AS nvarchar(20))
EXEC sp_executesql @cmd
END
GO
存储过程的输出:
hcuberack|kit14_1|kit13_1|kit12_1|kit7_2|kit6_2|kit4_3|kit3_4|Hcap_mod|id
24 |1 |1 |1 |1 |1 |0 |0 |24 |24
解决方法
暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!
如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。
小编邮箱:dio#foxmail.com (将#修改为@)