Marcin Zwierzyński

Marcin Zwierzyński Analityk biznesowy,
BZ WBK Leasing SA

Temat: Zapytanie przechowywane w zmiennej

Witam,

Mam tabelę z 2 kolumnami. W jednej są nazwy tabel, w drugiej string będący zapytaniem do danej tabeli. Uzywając kursora chciałbym wywoływać poszczególne zapytania, np:

@zmienna = 'SELECT kolumna1, kolumna2, kolumna3 FROM tabela'

Chciałbym aby działało to na zasadzie: exec @zmienna

Ale niestety nie wiem jak to uczynić. Może macie jakieś pomysły?Marcin Zwierzyński edytował(a) ten post dnia 31.08.11 o godzinie 15:07

konto usunięte

Temat: Zapytanie przechowywane w zmiennej

użyj kursora
Piotr Kukuryk

Piotr Kukuryk Programista, Bank
Pekao S.A.

Temat: Zapytanie przechowywane w zmiennej

CREATE TABLE [dbo].[Dict](
[id] [int] IDENTITY(1,1) NOT NULL,
[tableName] [varchar](50) NULL,
[query] [varchar](max) NULL,
CONSTRAINT [PK_Dict] PRIMARY KEY CLUSTERED
(
[id] ASC
)WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON) ON [PRIMARY]
) ON [PRIMARY]

INSERT INTO [dbo].[Dict] SELECT 'dbo.Table1', 'SELECT * FROM dbo.Table1'
INSERT INTO [dbo].[Dict] SELECT 'dbo.Table2', 'SELECT * FROM dbo.Table2'

ALTER PROCEDURE dbo.FetchFetch

AS
BEGIN

SET NOCOUNT ON;
DECLARE cur CURSOR FOR SELECT tableName,query FROM dbo.Dict
DECLARE @n VARCHAR(50)
DECLARE @q VARCHAR(MAX)

OPEN cur

FETCH NEXT FROM cur INTO @n, @q
WHILE @@FETCH_STATUS = 0
BEGIN
EXECUTE (@q)
FETCH NEXT FROM cur INTO @n, @q
END
CLOSE cur;
DEALLOCATE cur;
END
Marcin Zwierzyński

Marcin Zwierzyński Analityk biznesowy,
BZ WBK Leasing SA

Temat: Zapytanie przechowywane w zmiennej

Dzięki wielkie :)
Sławomir Marcjański

Sławomir Marcjański Programista /
Ethical Hacker

Temat: Zapytanie przechowywane w zmiennej

A ja przychodzę z takim patencikiem - do modyfikacji własnej :)

DECLARE @query nvarchar(MAX)
SET @query = ''
SELECT @query = @query+'SELECT * FROM '+name+' GO'+CHAR(10) FROM sys.TABLES
SELECT @query
exec sp_executesql @query

Następna dyskusja:

zapytanie w PostgreSQL




Wyślij zaproszenie do