Avatar billede mortency Nybegynder
18. november 2004 - 11:53 Der er 9 kommentarer og
2 løsninger

Hjelp til variabel i stored procedures

Jeg har en en variabel som henter inn deler av et tabell navn. Hvordan kan jeg løse dette?

CREATE PROCEDURE sp_GetLocale
(
@sp_DocWPLanguageID int,
@sp_Instance varchar
)
AS

Jeg får bare error: 137: Must declare the variable '@sp_Instance'.

SELECT LocaleID,LanguageTitle FROM @sp_InstanceLocale,@sp_InstanceLanguage WHERE WPLanguageID=@sp_DocWPLanguageID
GO
Avatar billede slash Nybegynder
18. november 2004 - 11:56 #1
skal man ikke angive længden på datatypen; jeg tænker her på varchar --> i dit eks
CREATE PROCEDURE sp_GetLocale
(
@sp_DocWPLanguageID int,
@sp_Instance varchar(255)  //ændring
)
AS
Avatar billede mortency Nybegynder
18. november 2004 - 12:37 #2
Får samme feil! Hva kan dette være?
Avatar billede slash Nybegynder
18. november 2004 - 12:42 #3
ok... du mangler jo at erklære følgende variable:
@sp_InstanceLocale,
@sp_InstanceLanguage

Du bruger de 2 ovenstående i din select
Avatar billede mortency Nybegynder
18. november 2004 - 12:45 #4
Nei tabellene heter i scriptet heter Locale og Language feks jeg kan sette inn tbl.
Avatar billede mortency Nybegynder
18. november 2004 - 12:48 #5
I query analyser kjører jeg følgende kode:

sp_GetLocale @sp_DocWPLanguageID=1, @sp_Instance='tblWP'

SP:

CREATE PROCEDURE sp_GetLocale
(
@sp_DocWPLanguageID int,
@sp_Instance varchar
)
AS

SELECT LocaleID,LanguageTitle FROM [@sp_Instance]Locale,[@sp_Instance]Language WHERE WPLanguageID=@sp_DocWPLanguageID
GO


ERROR er følgende:
Server: Msg 208, Level 16, State 1, Procedure sp_GetLocale, Line 11
Invalid object name '@sp_Instance'.
Server: Msg 208, Level 16, State 1, Procedure sp_GetLocale, Line 11
Invalid object name '@sp_Instance'.
Avatar billede mortency Nybegynder
18. november 2004 - 12:51 #6
Dette virker heller ikke;
FROM [' + @sp_Instance + ']Locale,[' + @sp_Instance + ']Language WHERE
Avatar billede slash Nybegynder
18. november 2004 - 13:02 #7
det er forkert den måde vi er igang med her! Der skal gang i dymanisk sql så at sige...
Avatar billede mortency Nybegynder
18. november 2004 - 13:04 #8
Dette virket! EXEC('SELECT * FROM [' + @sp_Instance + 'Language]')
Avatar billede slash Nybegynder
18. november 2004 - 13:05 #9
f.eks:
declare @Sql varchar(200)
set @SQL = 'select * from ' + @sp_Instance + ' order by ID'
exec(@SQL)
Avatar billede slash Nybegynder
18. november 2004 - 13:07 #10
ok - jamen det er jo OK
Avatar billede mortency Nybegynder
18. november 2004 - 13:14 #11
:-) Deler point. Takk for hjelpen.
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Computerworld tilbyder specialiserede kurser i database-management

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester