我有一個函數將返回所有公司的所有項目。表名稱應該是parametric.But我不能創建該函數的視圖。因爲我不能返回一個表。返回值是一個字符串。請幫忙。謝謝。從SQL函數創建sql視圖
GO
IF OBJECT_ID(N'dbo.ufnGetContactInformation', N'TF') IS NOT NULL
DROP FUNCTION dbo.ufnGetContactInformation;
GO
CREATE FUNCTION dbo.ufnGetContactInformation()
RETURNS @retContactInformation TABLE
(
-- Columns returned by the function
firm nvarchar(50) NULL
)
AS
BEGIN
DECLARE @referans AS INT, @NRP AS INT
DECLARE @TABLE AS NVARCHAR(MAX)
SET @TABLE = ''
DECLARE YourCursorNameHere CURSOR READ_ONLY
FOR
select c1.NR, C2.NR
from L_caPIFIRM c1 WITH(nolock)
INNER JOIN L_CAPIPERIOD C2 WITH(nolock) ON C1.NR=C2.FIRMNR
OPEN YourCursorNameHere
FETCH NEXT FROM YourCursorNameHere INTO @referans, @NRP
WHILE @@FETCH_STATUS = 0
BEGIN
IF @TABLE = ''
SET @TABLE= 'SELECT FIRM=' + str(@referans) +', CODE FROM LG_' + SUBSTRING(('00'+ LTRIM(STR(@referans))),LEN(('00'+ LTRIM(STR(@referans))))-2,3)+ '_ITEMS'
ELSE
SET @TABLE= @TABLE + ' UNION SELECT FIRM=' + str(@referans) +', CODE FROM LG_' + SUBSTRING(('00'+ LTRIM(STR(@referans))),LEN(('00'+ LTRIM(STR(@referans))))-2,3)+ '_ITEMS'
FETCH NEXT FROM YourCursorNameHERE INTO @referans,@NRP
END
-- EXEC(@TABLE)
CLOSE YourCursorNameHere
DEALLOCATE YourCursorNameHere
--BEGIN
-- INSERT INTO select
-- END
RETURN;
END;
GO
請給更多細節。你想達到什麼目的?在函數中使用遊標是非常糟糕的做法。它有非常嚴重的性能影響。 – Jaques 2014-11-24 09:14:24
其實我有表LG_001_Items,LG_002_Items ..我想獲得該表中的所有值,並創建一個視圖。數字001,002 ...是行號,他們應該是動態我從他們公司table.Thanks讀他們。 – user3310933 2014-11-24 11:27:19