PDA

View Full Version : ارسال نام جدول به رویه ها



zrahimic
سه شنبه 18 اسفند 1383, 15:14 عصر
سلام

چه طور میشه نام جدول را به Stored Procedure پاس کرد؟

تا بتوان به کمک یک رویه در جداول مختلف جستجو کرد.

ممنون

titbasoft
سه شنبه 18 اسفند 1383, 18:25 عصر
شما جلوی دستور Execute می تونید از 'tsql_string' هم استفاده کنید. به عبارت دیگر نام جدول رو با یک متغیر رشته ای درون یک SP بفرستید و درون آن SP مثلا عبارت زیر رو بنویسید

EXECUTE ('SELECT * FROM ' + @tbl_name + ' WHERE id=2')
:wink:

zrahimic
چهارشنبه 19 اسفند 1383, 11:54 صبح
ممنون

ولی در دستوری که شما نوشتید چطور میشه جلوی where از Contains استفاده کرد. با توجه به این که من می خوام بنویسم مثلا:



where contains N'سلام'



منظورم در استفاده از تک کتیشن است؟؟؟؟؟؟

majid_afra222
چهارشنبه 19 اسفند 1383, 12:09 عصر
سلام
می تونی از این کد هم استفاده کنی

CREATE PROCEDURE ExecSelect(@Table_Name varchar(50), @Where VARCHAR(100))
AS
DECLARE @StrSelect VARCHAR(200)
SET @StrSelect = 'SELECT * FROM '+ @Table_Name
IF LEN(@Where) > 0
SET @StrSelect = @StrSelect + @Where
EXEC (@StrSelect)

GO
برای اجرای رویه هم با داشتن شرط
DECLARE @Where VARCHAR(100)
SET @Where ='WHERE LastName = N''' + 'Callahan' + ''''
EXEC ExecSelect 'Northwind..[Employees]', @Where

بدون شرط هم بصورت زیر می شه
DECLARE @Where VARCHAR(100)
SET @Where =''
EXEC ExecSelect 'Northwind..[Employees]', @Where

titbasoft
چهارشنبه 19 اسفند 1383, 13:13 عصر
استفاده از 2 single quotation پشت سر هم درون رشته به معنای یک single quotation است به عبارت ساده تر از کد زیر استفاده کنید


EXECUTE ('SELECT * FROM ' + @tbl_name + ' where contains N''exp''')

همون چیزی که آقای majid_afra222 گفتند

zrahimic
یک شنبه 23 اسفند 1383, 13:45 عصر
ممنون