الفريق العربي للبرمجةأرشيف المنتديات · 2000 – 2023
نسخة أرشيفية للقراءة فقط — التسجيل والمشاركة مغلقان، والمحتوى محفوظ كما كان.

كود إنشاء DB داخل stored procedure

مغلق
بدأه soukara في 14 مارس 2005 · 3 رد · 706 مشاهدة · في قواعد بيانات Microsoft SQL Server
مشاركة: واتساب X فيسبوك تيليجرام
#1 صاحب الموضوع

السلام عليكم ........

كيف ادخل هذا الكود كلوا داخل واحد stored procedures ......مطلوب مني كده!!

بليز مع شرح ...ومرسي كتير على تعاونكم ....وسوري استحملوني شوي لسه جديدة على الـSQL

وشكرا :rolleyes:

create database sample
on
primary(name=SampleData1,
        filename='C:\SampleData1.mdf',
        size=10MB,
        maxsize=25MB,
        filegrowth=10%)
log on 
(name=sample1log,
 filename='C:\sample1log.ldf',
 size=1MB,
 maxsize=3MB,
 filegrowth=3%)
go

create table SERVICES
(SERV_CODE           NVARCHAR(10)           not null,
 SERV_ANAME          NVARCHAR(60)           null    ,
 SERV_ENAME          NVARCHAR(60)           null    ,
    constraint PK_SERVICES primary key (SERV_CODE)); 
go

create table NATIONALITY
    (NAT_CODE            NVARCHAR(10)           not null,
    NAT_ANAME           NVARCHAR(60)           null    ,
    NAT_ENAME           NVARCHAR(60)           null    ,
    constraint PK_NATIONALITY primary key (NAT_CODE)) 
go

create table CUSTOMERS
(  CUST_CODE           NVARCHAR(15)           not null,
    NAT_CODE            NVARCHAR(10)           null    ,
    CITY_CODE           NVARCHAR(3)            null    ,
    FIRST_ANAME        NVARCHAR(20)           null    ,
    FATHER_ANAME       NVARCHAR(20)           null    ,
    GRAND_ANAME         NVARCHAR(20)           null    ,
    LAST_ANAME          NVARCHAR(20)           null    ,
    FIRST_ENAME         NVARCHAR(20)           null    ,
    FATHER_ENAME        NVARCHAR(20)           null    ,
    GRAND_ENAME         NVARCHAR(20)           null    ,
    LAST_ENAME          NVARCHAR(20)           null    ,
    FULL_ANAME          NVARCHAR(80)           null    ,
    FULL_ENAME          NVARCHAR(80)           null    ,
    ID_NO               NVARCHAR(20)           null    ,
    DAY_BIRTH           DATE                   null    ,
    JOB_DESC            NVARCHAR(30)           null    ,
    WORK_PLACE          NVARCHAR(60)           null    ,
    POBOX               NVARCHAR(10)           null    ,
    POSTAL_CODE         NVARCHAR(10)           null    ,
    OFFIC_TEL           NVARCHAR(30)           null    ,
    MOBILE_TEL          NVARCHAR(30)           null    ,
    HOME_TEL            NVARCHAR(30)           null    ,
    EMAIL               NVARCHAR(40)           null    ,
    constraint PK_CUSTOMERS primary key (CUST_CODE)
);

create table TRS_MSTR
(
    POLICY_CODE         NVARCHAR(15)           not null,
    MAINT_CENTER_CODE   NVARCHAR(5)            null    ,
    TRS_COUNT           NUMBER(38)             not null,
    USER_CODE           NVARCHAR(10)           null    ,
    TRS_DATE            DATE                   null    ,
    TRS_TIME            DATE                   null    ,
    constraint PK_TRS_MSTR primary key (TRS_COUNT)
);

create table TRS_DETAIL
(
    TRS_COUNT           NUMBER(38)             not null,
    SERV_CODE           NVARCHAR(10)           null    ,
    SR_NO               NUMBER(38)             not null,
    CUST_AMOUNT         NUMBER(16,2)           null    ,
    COMP_AMOUNT         NUMBER(16,2)           null    ,
    EXTRA_CUST_AMOUNT   NUMBER(16,2)           null    ,
    constraint PK_TRS_DETAIL primary key (TRS_COUNT, SR_NO)
);

===================================================

alter table CUSTOMERS
    add constraint FK_CUSTOMER_REF_197_NATIONAL foreign key  (NAT_CODE)
       references NATIONALITY (NAT_CODE);

alter table TRS_DETAIL
    add constraint FK_TRS_DETA_REF_258_TRS_MSTR foreign key  (TRS_COUNT)
       references TRS_MSTR (TRS_COUNT);

alter table TRS_DETAIL
    add constraint FK_TRS_DETA_REF_266_SERVICES foreign key  (SERV_CODE)
       references SERVICES (SERV_CODE);
===================================================

CREATE INDEX DX1_TRS_MSTR ON TRS_MSTR(TRS_COUNT);
CREATE INDEX DX1_CUSTOMERS ON CUSTOMERS(NAT_CODE);
===================================================
CREATE VIEW V_TRS_MSTR AS (SELECT * FROM TRS_MSTR);

تم تعديل هذه المشاركة بواسطة طارق إبراهيم في 14 مارس 2005 في 07:07

683ce649aa.gif
#2

:o الكود محتاج للتعليقات لانه غير مفهوم هذا مجرد اقتراح لا اكثر

اما بخصوص وضعه بداخل Stored Procedure فكل ما عليك هو وضعه بين

Create Procedure ProcName 
as
/*
CODE Goes Here
*/
go

بالمناسبة سبق و تم اجابتك على هذا الرابط

سؤال حول ال Index و ال View و ال Stored Procedure

Technical Lead Developer

My LinkedIn Profile

اللهم قنى شر الجهل و الجهلاء

( اقْتَرَبَ لِلنَّاسِ حِسَابُهُمْ وَهُمْ فِي غَفْلَةٍ مَّعْرِضُونَ ) {الأنبياء:1}

#3

السلام عليكم و رحمة الله و بركاته

أخي العزيز المشكلة أني أحس أنك خلطت خلطاً كبيراً بين الأجراء المخزن stored procedures و النصوص البرمجية scripts و التي يتم أستعمالها مع الأداة query analyzer المدمجة مع حزمة sql server 2000

و السؤال هل من الممكن وضع كل مقاطع الأكواد هذه في إجراء مخزن واحد و الجواب إنه لا مشكلة و كل ما عليك هو أستخدام الصيغة العامة التي كتبها أخونا طارق أبراهيم و لكن يجب أن تراعي أن لا تكون بين كل عملية أو مقطع و الأخر كلمة go

و إن أردت أستعمال كلمة go فعليك أن تتجه إلى sql analyzer و تنشأ نص برمجي "scripts" يحتوى على المقاطع التي تريد تفصيلها

و في الحقيقة إن إستعمال الأداة query Analayzer ووضع الأكواد التي على شاكلة ما أدرجته أنت سابقا في شكل Scripts ذو أهمية خاصة من حيث أنك تستطيع أن تعرف إن كانت هناك أخطاء في أكوادك أم لا و إن دعت الحاجة إلى إدماج مثل هذه الأكواد في إجراء مخزن فإنه لا مانع لدي و لكن و للحق أقول فأنه غريب علي أن أجد إجراء مخزن يبدأ بإنشاء قاعدة بيانات و في حياتي العملية لم تدعني الضرورة إلى إنشاء مثل ذلك و لكن الحقيقة تبدو جلية في إن أهمية الأجراءات المخزنة و سر قوتها تكمن في أسترجاع البيانات و وضع تراكيب من لغة برمجة قواعد البيانات transact sql و أستخدامها و أستخدام parameters التي من خلالها يتم أسترجاع البيانات

و لكني الأن أكرر لا مانع من أستخدامك العديد من الأكواد و العمليات داخل إجراء مخزن واحد ولكن الخطأ الذي من الممكن أن تقع فيه هو أستخدام go بين المقاطع

هذا و الله أعلم

وشكراً

itasmallbanner.png
#4
اقتباس
لكن و للحق أقول فأنه غريب علي أن أجد إجراء مخزن يبدأ بإنشاء قاعدة بيانات و في حياتي العملية لم تدعني الضرورة إلى إنشاء مثل ذلك

يمكن تنفيذ مثل هذه العمليات في stored procedure ، ولكن يجب أن يبدأ التنفيذ داخل قاعدة البيانات master.

اقتباس
و لكني الأن أكرر لا مانع من أستخدامك العديد من الأكواد و العمليات داخل إجراء مخزن واحد ولكن الخطأ الذي من الممكن أن تقع فيه هو أستخدام go بين المقاطع

فعلا، لأن go نتهي تنفيذ الإجراء المخزن، يعني أن كل سطر يلي جملة go لن يعتبر ضمن الإجراء المخزن، وقد يسبب أخطاء ترجمة إذا كان يحتوي على متغيرات.

لكن ألا تلاحظ أن السطرuse sample يحتاج لأن تكون قاعدة البيانات موجودة فعليا؟ وهذا لايتأكد إلا بالكلمة go عقب جملة إنشاء قاعدة البيانات.

فكر بطريقة أخرى

هذا الموضوع مغلق.

مواضيع مشابهة