webForumDet fria alternativet

Batch utan sp

5 svar · 297 visningar · startad av Dino

DinoMedlem sedan sep. 20011 918 inlägg
#1

SQLEXPRESS

Hade tänkt att skicka en fråga så här:

string sql = "INSERT INTO Add(Add_a, Add_b) VALUES(@a,@b) return @@IDENTITY";

Men får fel, kollade då att man skulle kunna göra så här.

string sql = @"USE Tester
IF EXISTS (SELECT name FROM sysobjects 
         WHERE name = 'Add_Save' AND type = 'P')
   DROP PROCEDURE Add_Save
GO
USE Tester
GO
 CREATE PROCEDURE Add_Save 
AS 
INSERT INTO Add(Add_a, Add_b) VALUES(@a,@b) 
return @@IDENTITY 
GO";

Men i båda fallen så får jag felmeddelandet:

A RETURN statement with a return value cannot be used in this context.

Så måste jag använda en sp, eller finns det någon annan lösning?

@ndersMedlem sedan juni 200026 914 inlägg
#2

Inled med SET NOCOUNT ON, avsluta med SELECT @@IDENTITY.

edit: ser nu att du skrivit SQLEXPRESS. Det vet jag inte vad det är, så ovanstående fungerar antagligen inte. :)

LarsGMedlem sedan dec. 200012 465 inlägg
#3

Byt

SELECT @@IDENTITY

mot

SELECT scope_identity()
DinoMedlem sedan sep. 20011 918 inlägg
#4

SQLEXPRESS är SQLServer fast med lite begränsningar. Dock helt grattis.
Får det inte att fungera. Var skall jag skriva det i den fösta sqlen eller den andra?

LarsGMedlem sedan dec. 200012 465 inlägg
#5
string sql = "set nocount on INSERT INTO Add(Add_a, Add_b) VALUES(@a,@b) select scope_identity()";
DinoMedlem sedan sep. 20011 918 inlägg
#6

Ok, får det att fungera i SQLExpress Manager(SQLExpress variant av Query Analyzer), men inte från min kod. Så jag får höra mig vidare från folk i de kretsarna.

Tack för hjälpen.

red// Så här blev det till slut.
"set nocount on INSERT INTO ABC(A, B, C) VALUES(@a,@b,@c);SELECT @d = scope_identity()

Genererad på 379 ms · cache AV · v20260730165559-full.f96bc7eb