我有一个过程可以正确返回结果,但是我无法将过程结果存储在单个表或临时表中。
我的过程返回这样的值
ItemName
BATH RUG-VDW.WO COTTON CLASSIC FRAME
-------------------------------------------
ItemName ItemCode StyleNo UPC EAN UnitFactor
BATH RUG-VDW.WO COTTON CLASSIC FRAME 4 884631844635 0884631844635 4.580
BATHRUG-VDW.WO COTTON CLASSIC FRAME 5 884631844659 0884631844659 4.580
BATH RUG-VDW.W COTTON CLASSIC FRAME 6 884631844666 0884631844666 4.580
ItemName
BATH RUG-VDW.WOVEN COTTON CLASSIC FRAME 12-840
-------------------------------------------
ItemName ItemCode StyleNo UPC EAN UnitFactor
BATH RUG-VDW.WOVEN COTTON CLASSIC FRAME 12-840 30 12-840 884631881906 0884631881906 4.580
BATH RUG-VDW.WOVEN COTTON CLASSIC FRAME 12-840 31 12-840 884631881913 0884631881913 4.580
----------------------------------------------------------------------------
代码:
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
ALTER PROCEDURE [dbo].[sp_GetDetail]
AS
BEGIN
SET NOCOUNT ON;
DECLARE @tab TABLE (no INT, name VARCHAR(30))
DECLARE @MyCursor CURSOR;
DECLARE @MyField VARCHAR(MAX);
DECLARE @Qry VARCHAR(MAX);
SET NOCOUNT ON;
SET @MyCursor = CURSOR FOR
SELECT DISTINCT ItemName FROM dbo.NewTest
SET @Qry=''
OPEN @MyCursor
FETCH NEXT FROM @MyCursor INTO @MyField
WHILE @@FETCH_STATUS = 0
BEGIN
/* YOUR ALGORITHM GOES HERE */
SET @Qry = @Qry + '; SELECT '''+@MyField+''' AS ItemName'
SET @Qry = @Qry + '; SELECT ItemName, ItemCode, StyleNo, UPC, EAN, UnitFactor FROM NewTest WHERE ItemName = '''+@MyField+''''
FETCH NEXT FROM @MyCursor INTO @MyField
END;
EXEC (@Qry);
CLOSE @MyCursor ;
DEALLOCATE @MyCursor;
END;
答案 0 :(得分:0)
如果您希望动态sql将值保存到临时表中,请先创建临时表(在光标之前),
IF OBJECT_ID('tempdb..#MyTempTable') IS NOT NULL DROP TABLE #MyTempTable
create table #MyTempTable (ItemName varchar(100), ItemCode varchar(100), StyleNo varchar(100), UPC varchar(100), EAN varchar(100),
UnitFactor varchar(100)) -- change these definitions to match your actual data
然后更改构建sql的代码:
Set @Qry=@Qry+'; select '''+@MyField+''' as ItemName'
Set @Qry=@Qry+'; insert into #MyTempTable select ItemName, ItemCode, StyleNo, UPC, EAN,
UnitFactor from NewTest where ItemName ='''+@MyField+''''
临时表#MyTempTable将在光标之外可用:
select * from #MyTempTable
drop table #MyTempTable
答案 1 :(得分:0)
应尽可能避免使用游标。这将返回一个结果集。希望这可以满足您的需求。
Button mButton = findViewById(R.id.activity_home_cta);
答案 2 :(得分:0)
您返回2个表,它们具有不同的结构。您不能将其存储在临时表中。
为什么您仍然只用名字的第一个SELECT
做?看来完全是多余的。