Wie bekomme ich meine TSQL gespeicherte Prozedur, um data zurückzugeben?

Ich beginne mit "Babyschritten" mit einem gespeicherten Vorgang, der am Ende wird etwas komplex. Alles, was ich zuerst tun möchte, ist, eine Temp-Tabelle zu erstellen, bevölkert ein paar der Felder mit einigen gefälschten Werten, und dann die Tabelle von der SP zurückgegeben werden, wenn es aufgerufen wird. Hier ist es:

CREATE Procedure [dbo].[priceVarianceTest] @Unit varchar(25), @BegDate datetime, @EndDate datetime AS DECLARE @Week1End datetime = DATEADD(Day, 6, @BegDate); DECLARE @Week2Begin datetime = DATEADD(Day, 7, @BegDate); create table #temp1 ( Unit varchar(50), MemberNo varchar(42), MemberItemCode varchar(42), ShortName varchar(25), ItemCode varchar(50), WVItem varchar(25), WVItemCode varchar(25), WVDescription varchar(250), Week1Usage varchar(25), Week2Usage varchar(25), UsageVariance varchar(25), Week1Price varchar(25), Week2Price varchar(25), PriceVariance varchar(25), PercentageOfPriceVariance varchar(42) ) -- now try to add some data and return it: Update #temp1 set Unit = 'LOS CARNEROS', MemberNo = '1289', MemberItemCode = '76Trombones'; select * from #temp1; 

Und hier ist, was es gerendert wird, wenn ich es aus dem server-Explorer ausführen (nachdem ich "bla" und ein paar Termine eingegeben habe, wenn ich zum Parameter vals aufgefordert habe):

 USE [CPSData] GO DECLARE @return_value Int EXEC @return_value = [dbo].[priceVarianceTest] @Unit = N'bla', @BegDate = N'2015-01-01', @EndDate = N'2016-01-01' SELECT @return_value as 'Return Value' GO 

Ich hatte gehofft, dass die "select *" einige data zurückgeben würde, aber alles, was ich im Ergebnisbereich bekomme, ist:

  Return Value ---------------- 1 0 

Warum gibt es nicht mehr etwas wie:

 Unit MemberNo MemberItemCode ShortName . . . ---- -------- -------------- --------- ----- LOS CARNEROS 1289 76Trombones Null . . . 

?

Was brauche ich, um sinnvolle (wenn auch zugegebene) data aus dem SP zu bekommen?

 Update #temp1 set Unit = 'LOS CARNEROS', MemberNo = '1289', MemberItemCode = '76Trombones'; 

Wird nicht funktionieren, wenn keine Zeilen vorhanden sind.

Sie müssen INSERT anstelle von UPDATE verwenden:

 INSERT INTO #temp1 (Unit,MemberNo,MemberItemCode) VALUES('LOS CARNEROS','1289','76Trombones') 

Ein MERGE könnte das sein, was du suchst, wenn du beides machen möchtest. Aber da Sie die Tabelle in Ihrem gespeicherten Proc wiederherstellen, dann sehe ich Sie nicht mit Update jederzeit.