Frage zu Parameter in gespeicherte

27/05/2010 - 22:20 von ikas | Report spam
Hallo,

ich habe ein Gespeicherte Prozedur erstellt. (MS SQL 2005).
Die Prozedur beinhaltet diese Zeile: (Das klappt auch.)

SELECT vName FROM tNamen WHERE nName IN (’aa1’, ’aa2’, ’aa3’)

Jetzt möchte ich denWerte als Parameter übergeben.

DECLARE @p VARCHAR(600)
SET @p = ’aa1’, ’aa2’, ’aa3’
SELECT vName FROM tNamen WHERE nName IN (@p)

Dass klappt nicht.
Von welchen Datentüp muss @p sein?

Kann jeman weiterhelfen?

Gruß und Danke

ikas
Hallo,



SELECT vName FROM tNamen WHERE nName IN (’aa1’, ’aa2’, ’aa3’)







Jetzt möchte ich denWerte als Parameter übergeben.



DECLARE @p VARCHAR(600)

SET @p = ’aa1’, ’aa2’, ’aa3’

SELECT vName FROM tNamen WHERE nName IN (@p)

Dass klappt nicht.


Von welchen Datentüp muss @p sein?

Kann jeman weiterhelfen?

Gruß und Danke

ikas
 

Lesen sie die antworten

#1 Uwe Ricken
28/05/2010 - 08:34 | Warnen spam
Hallo Ikas,

das geht so einfach nicht!
Entweder die Parameter einzeln an die Proc übergeben oder - nicht mein
Favorit - mittels sp_executeSQL.

Beispiel:

CREATE PROC dbo.myTest
@Var varchar(255)
AS
SET NOCOUNT ON
DECLARE @stmt nvarchar(2000)

SET @stmt = 'SELECT vName FROM tNamen WHERE nName IN (' + @Var + ')'
EXEC sp_executeSQL @stmt

SET NOCOUNT OFF
GO

Es gibt jedoch ein paar wesentliche Einschrànkungen, die Du beachten musst:

- wird im Kontext des Users ausgeführt
- Berechtigungen auf die Relation muss für den User SELECT sein

Verwende sp_executeSQL anstatt EXEC, da so wenigstens die Abfrageplàne
gespeichert werden.

HTH ;_)

Uwe Ricken
db Berater GmbH
http://www.db-berater.de

MCTS: Microsoft SQL Server 2005
MCDBA: Microsoft SQL Server 2005

"ikas" schrieb im Newsbeitrag
news:
Hallo,

ich habe ein Gespeicherte Prozedur erstellt. (MS SQL 2005).
Die Prozedur beinhaltet diese Zeile: (Das klappt auch.)

SELECT vName FROM tNamen WHERE nName IN (’aa1’, ’aa2’, ’aa3’)

Jetzt möchte ich denWerte als Parameter übergeben.

DECLARE @p VARCHAR(600)
SET @p = ’aa1’, ’aa2’, ’aa3’
SELECT vName FROM tNamen WHERE nName IN (@p)

Dass klappt nicht.
Von welchen Datentüp muss @p sein?

Kann jeman weiterhelfen?

Gruß und Danke

ikas
Hallo,



SELECT vName FROM tNamen WHERE nName IN (’aa1’, ’aa2’, ’aa3’)







Jetzt möchte ich denWerte als Parameter übergeben.



DECLARE @p VARCHAR(600)

SET @p = ’aa1’, ’aa2’, ’aa3’

SELECT vName FROM tNamen WHERE nName IN (@p)

Dass klappt nicht.


Von welchen Datentüp muss @p sein?

Kann jeman weiterhelfen?

Gruß und Danke

ikas

Ähnliche fragen