View Full Version : سوال: دریافت پارامتر رشته و چسبوندن اون به کد Stored Procedures
  
Omid_Manam
یک شنبه 25 مرداد 1388, 12:42 عصر
سلام دوستان این کد  Stored Procedures هست واسه Attach یک بانک حالا میخوام به جای این آدرس های قرمز رنگ ثابت یه آدرس به عنوان پارامتر ورودی بگیرم و جای اون بذارم . ممنون میشم کسی این کد دست کاری کنه و درستش کنه و بهم بده.
 
USE [master]
GO
CREATE DATABASE [ETEMAD] ON 
( FILENAME = N'D:\Etemad\Database\Etemad.mdf' ),
( FILENAME = N'D:\Etemad\Database\Etemad_log.ldf' )
 FOR ATTACH
GO
if not exists (select name from master.dbo.sysdatabases sd where name = N'ETEMAD' and SUSER_SNAME(sd.sid) = SUSER_SNAME() ) EXEC [ETEMAD].dbo.sp_changedbowner @loginame=N'MOHSEN\dswahbwa', @map=false
GO
 
البته فقط مسیر های 2 خط بالا نه چند کلمه قرمز رنگ پایین
محمد سلیم آبادی
یک شنبه 25 مرداد 1388, 13:58 عصر
داخل یک sp نمی شود از دستور GO استفاده کرد.
 
دو پارامتر از نوع sysname برای sp تعریف کنید و در بدنه sp از آن استفاده کنید.
مثلا FILENAME=@path
Kamyar.Kimiyabeigi
یک شنبه 25 مرداد 1388, 14:08 عصر
از execute استفاده كنين
محمد سلیم آبادی
یک شنبه 25 مرداد 1388, 14:19 عصر
این sp را امتحان کنید.
CREATE PROC SP_t
@path1 sysname, 
@path2 sysname
AS
BEGIN
     Declare @sqlCommand NVARCHAR(4000)
     SET @SqlCommand=
     'USE [master]
     GO
     CREATE DATABASE [ETEMAD] ON 
     ( FILENAME = N'+@path1+' ),
     ( FILENAME = N'+@path2+' )
     FOR ATTACH
     GO
     if not exists (select name from master.dbo.sysdatabases sd 
                             where name = N[ETEMAD]
                             and SUSER_SNAME(sd.sid) = SUSER_SNAME() )
     EXEC [ETEMAD].dbo.sp_changedbowner @loginame=N[MOHSEN\dswahbwa], @map=false
     GO'
EXEC (@SqlCommand)
END
 
 
CREATE PROC SP_t
@path1 sysname, 
@path2 sysname
AS
BEGIN
      Declare @sqlCommand NVARCHAR(4000)
      SET @SqlCommand=
      'USE [master]
      GO
      CREATE DATABASE [ETEMAD] ON 
      ( FILENAME = N'+@path1+' ),
      ( FILENAME = N'+@path2+' )
      FOR ATTACH
      GO
      if not exists (select name from master.dbo.sysdatabases sd 
                              where name = N''ETEMAD''
                              and SUSER_SNAME(sd.sid) = SUSER_SNAME() )
      EXEC [ETEMAD].dbo.sp_changedbowner @loginame=N''MOHSEN\dswahbwa'', @map=false
      GO'
EXEC (@SqlCommand)
END
 
CREATE PROC SP_t
@path1 sysname, 
@path2 sysname
AS
BEGIN
      Declare @sqlCommand NVARCHAR(4000)
      SET @SqlCommand=
      'USE [master]
      GO
      CREATE DATABASE [ETEMAD] ON 
      ( FILENAME = N'+@path1+' ),
      ( FILENAME = N'+@path2+' )
      FOR ATTACH
      GO
      if not exists (select name from master.dbo.sysdatabases sd 
                              where name = [ETEMAD]
                              and SUSER_SNAME(sd.sid) = SUSER_SNAME() )
      EXEC [ETEMAD].dbo.sp_changedbowner @loginame=[MOHSEN\dswahbwa], @map=false
      GO'
EXEC (@SqlCommand)
END
 
vBulletin® v4.2.5, Copyright ©2000-1404, Jelsoft Enterprises Ltd.