Hej! Mitt första intryck, är varför har du en separat tabell för varje företag? Hej! Först och främst så håller jag med Ulf, varför inte bara ha en tabell för samtliga företags applikationer med en kolumn som talar om vilket företag det gäller?stored.procedures dynamiskt?
*sorry hedgate jag fixar inte detta*
Har följande problem: Jag har skapat en stored.procedure som hämtar värden från ett formulär. Längre ner på sidan vill jag dynamiskt lägga in dessa värde i rätt tabell (det aktuella företagets tabell) beroende på vilket företag som använder denna funktion. Värdet för detta får jag genom @sCompany. Om du tittar längre ner på sidan så ser du att jag försöker med INSERT INTO App_@sCompany men detta skapa endast en tabell med namnet App_@sCompany.
Hur skall jag göra???
<code>
SET QUOTED_IDENTIFIER ON
GO
SET ANSI_NULLS ON
GO
ALTER PROCEDURE sp_CreateNewApplication
(
@sCompany varchar(50),
@sApplication varchar(200),
@sApplicationEng varchar(200),
@sInfo varchar(8000),
@sInfoEng varchar(8000),
@sCourseTime varchar(200),
@sCourseTimeEng varchar(200),
@sPlace varchar(200),
@sPlaceEng varchar(200),
@sCost varchar(200),
@sCostEng varchar(200),
@sOther varchar(8000),
@sOtherEng varchar(8000),
@sShowApp varchar(10),
@sAppLanguage varchar(10)
)
AS
BEGIN
SET NOCOUNT ON
/* Skapar ny applikation */
INSERT INTO App_@sCompany??????????????
(
Application,
ApplicationEng,
Info,
InfoEng,
CourseTime,
CourseTimeEng,
Place,
PlaceEng,
Cost,
CostEng,
Other,
OtherEng,
ShowApp,
AppLanguage
)
VALUES
(
@sApplication,
@sApplicationEng,
@sInfo,
@sInfoEng,
@sCourseTime,
@sCourseTimeEng,
@sPlace,
@sPlaceEng,
@sCost,
@sCostEng,
@sOther,
@sOtherEng,
@sShowApp,
@sAppLanguage
)
END
GO
SET QUOTED_IDENTIFIER OFF
GO
SET ANSI_NULLS ON
GO
</code>
Tacksam för all hjälp jag kan få!Sv: stored.procedures dynamiskt?
Vore det inte lättare att du har företagsinformationen i en tabell och lägger till ett nytt företag med ett unikt ID för varje företag istället?Sv: stored.procedures dynamiskt?
Jo, jag håller fullständigt med dig. Jag kommer att ändra på detta men problemet kvarstår eftersom jag har flera olika tabeller där samma problem uppstår så att jag tog med denna tabell mer som ett exempel.
T ex vid ett tillfälle skall Administratören kunna lägga upp nya applikationer och då skall en ny tabell skapas dynamiskt typ:
CREATE TABLE tble_@ApplicationName
Det måste finnas en lösning på detta säkert återkommande problem.Sv: stored.procedures dynamiskt?
Vidare, för att lösa ditt problem behöver du köra din SQL sats som en dynamiskt genererad sats. Man kan inte ange ett tabellnamn som en variabel, utan SQL satsen som körs måste vara en korrekt skriven sats. Alltså, skapa en strängvariabel, bygg i denna upp din SQL sats och exekvera slutligen denna med hjälp av EXEC eller sp_executesql (kolla tips ang. detta på http://www.hedgate.net/, under SQL Server tips).
DECLARE @sql nvarchar(2000)
SET @sql = N'INSERT INTO Appl_' + @sCompany
+ N'(colA........) VALUES ('
+ @varA + ', ' + @....
EXEC @sql