PDA

View Full Version : سوال: Stored Procedure و ارسال تعداد نامعلوم پارامتر به آن براي درج



fa_karoon
چهارشنبه 10 شهریور 1389, 14:29 عصر
سلام دوستان مي خوام يه Stored Procedure براي Insert بنويسم كه براي تمام عمليات هاي درج بتونم ازش استفاده كنم يعني بشه تعداد پارامترهايي كه به اون ارسال مي كنيم متغير باشه از اساتيد خواهش مي كنم اگه راهي به نظرشون مي رسه ابزارهاش رو بيان كنند خودم به فكر ارسال آرايه هستم؟
با آرزوي قبولي طاعات ممنون

mehdis2
چهارشنبه 10 شهریور 1389, 16:29 عصر
سلام
تویه sql server 2008 میگن میشه آرایه بفرستی شاید کارتون بشه

meysam_pro
پنج شنبه 11 شهریور 1389, 06:45 صبح
شما میتونید یک SP بنویسید که شامل 3 ورودی باشه
ورودی اول نام جدول
ورودی دوم اسم فیلدها که با ، جدا شده اند
ورودی سوم مقادیر فیلدها که با ، جدا شده اند

بعد در محتوای SP رشته های ورودی روبه هم Concatenate کنید و رشته درست شده رو با استفاده از دستور Execute اجرا نمایید.

fa_karoon
جمعه 12 شهریور 1389, 12:39 عصر
شما میتونید یک SP بنویسید که شامل 3 ورودی باشه
ورودی اول نام جدول
ورودی دوم اسم فیلدها که با ، جدا شده اند
ورودی سوم مقادیر فیلدها که با ، جدا شده اند

بعد در محتوای SP رشته های ورودی روبه هم Concatenate کنید و رشته درست شده رو با استفاده از دستور Execute اجرا نمایید.

سلام از پاسختون ممنون اما از اونجايي كه من خيلي به توابع و دستوراتي كه مي شه تو Store Procedure استفاده كرد وارد نيستم مي شه يه مثال بزنيد البته اگه زحمتي نيست مرسي

fa_karoon
شنبه 13 شهریور 1389, 23:00 عصر
سلام دوستان لطفا اگه كسي مي تونه جواب اين سوال رو بده خيلي نيازش دارم

ali_zzr
یک شنبه 14 شهریور 1389, 16:25 عصر
شما میتونید یک SP بنویسید که شامل 3 ورودی باشه
ورودی اول نام جدول
ورودی دوم اسم فیلدها که با ، جدا شده اند
ورودی سوم مقادیر فیلدها که با ، جدا شده اند

بعد در محتوای SP رشته های ورودی روبه هم Concatenate کنید و رشته درست شده رو با استفاده از دستور Execute اجرا نمایید.

میشه بیشتر توضیح بدید راجع به این روش که گفتید.
این کار به نظر توی Sql خیلی مشکل میاد مخوصا اون مرحله جداسازی با ","
احتمالا باید برای این کار یک Function جدا گانه نوشته بشود وگرنه دستوری مستقیمی برای Split رشته در Sql نیست

meysam_pro
دوشنبه 15 شهریور 1389, 00:20 صبح
CREATE PROCEDURE DynamicInsert_SP
@TableName NVARCHAR(32),
@FieldsName NVARCHAR(256),
@Values NVARCHAR(256)
AS
BEGIN
SET NOCOUNT ON;

DECLARE @Command NVARCHAR(max)

SET @Command = 'INSERT INTO '
SET @Command = @Command+@TableName+'('
SET @Command = @Command+') ('
SET @Command = @Command+@Values+')'

--ALSO YOU CAN USE sp_executesql
EXECUTE @Command
END
GO


درسته؟

ali_zzr
دوشنبه 15 شهریور 1389, 11:51 صبح
CREATE PROCEDURE DynamicInsert_SP
@TableName NVARCHAR(32),
@FieldsName NVARCHAR(256),
@Values NVARCHAR(256)
AS
BEGIN
SET NOCOUNT ON;

DECLARE @Command NVARCHAR(max)

SET @Command = 'INSERT INTO '
SET @Command = @Command+@TableName+'('
SET @Command = @Command+') ('
SET @Command = @Command+@Values+')'

--ALSO YOU CAN USE sp_executesql
EXECUTE @Command
END
GO
درسته؟

عالی بود.ترفند جالبی بود.

meysam_pro
چهارشنبه 17 شهریور 1389, 00:05 صبح
البته از شکل صحیح دستور استفاده کنید!