YetAnotherForum
სალამი სტუმარს ძებნა | აქტიური თემები | შესვლა | რეგისტრაცია

ფავორიტებში დამატება
Table and Stored Procedure Generate (გენერაცია)
reziko Offline
#1 Posted : Monday, August 22, 2011 6:39:16 PM

Rank: Member

Medals:

Groups: Registered
Joined: 9/13/2010
Posts: 13
Points: 39
Location: Georgia, Tbilisi

Thanks: 1 times
Was thanked: 0 time(s) in 0 post(s)
გამარჯობათ.

შევეცდები მოკლედ და კონკრეტულად ავხსნა რაც მჭირდება.

1. Generate Table
მინდა რომ იყოს ერთი პროცედურა რომელიც ავტომატურად დააგენერირებს Table-ს, მიუთოთო ცხრილის სახელი ველის სახელი და ველის ტიპი.

2. მინდა პროცედურა რომელიც ავტომატურად დააგენერირებს Insert,Update,Delete პროცედურებს.
მიუთითო ცხრილის სახელი და თითონ გააკეთოს გენერაცია ამ პროცედურების.

რათქმაუნდა ტრანზაქციებით და შეცდომების კონტროლით.

Sponsor  
 
Apex ltd. http://www.apex.ge
vajaGM Offline
#2 Posted : Tuesday, August 23, 2011 1:48:23 PM

Rank: Administration

Medals:

Groups: Administrators
Joined: 10/20/2012
Posts: 106
Points: 327
Location: Tbilisi

Thanks: 0 times
Was thanked: 0 time(s) in 0 post(s)
ქუოტა (Quote):
1. Generate Table
მინდა რომ იყოს ერთი პროცედურა რომელიც ავტომატურად დააგენერირებს Table-ს, მიუთოთო ცხრილის სახელი ველის სახელი და ველის ტიპი.


დაახლოებით ასეთი?

CREATE PROCEDURE sp_Generate_Table
(
@tablename sysname,
@col1_Name sysname,
@col1_Type nvarchar(100)
@col2_Name sysname,
@col2_Type nvarchar(100),
........
........
........
........
@colN_Name sysname,
@colN_Type nvarchar(100)
)
AS
........
........



ან ეს პარამეტრები შეიძლება შეიტანო რაღაც ცხრილში, მაგალითად ასეთში :

CREATE TABLE tblGenTable
(
Tablename sysname,
ColName sysname,
ColType nvarchar(100)
)

და შემდეგ აპროცედურის საშუალებით , რომელიც ამ ცხრილს გამოიყენებს შექმნა სასურველი ცხრილი, მაგრამ...


რა აზრი აქვს ასეთი პროცედურის დაწერას? რაში უნდა გამოიყენო? ახსენი ამოცანა უფრო გასაგებად, კონკრეტულად რა ამოცანის წინასე დგეხარ და მერე განვსაზღვროთ მისი გადაწყვეტის გზა...


ქუოტა (Quote):
vajaGM Offline
#3 Posted : Tuesday, August 23, 2011 1:52:20 PM

Rank: Administration

Medals:

Groups: Administrators
Joined: 10/20/2012
Posts: 106
Points: 327
Location: Tbilisi

Thanks: 0 times
Was thanked: 0 time(s) in 0 post(s)
ქუოტა (Quote):
2. მინდა პროცედურა რომელიც ავტომატურად დააგენერირებს Insert,Update,Delete პროცედურებს.
მიუთითო ცხრილის სახელი და თითონ გააკეთოს გენერაცია ამ პროცედურების.

რათქმაუნდა ტრანზაქციებით და შეცდომების კონტროლით.



ჯერ უნდა დაწერო როგორი სახის გინდა ეს პროცედურა იყოს (ნიმუში) კონკრეტული ცხრილისთვის (ცხრილის სტრუქტურის მაგალითიც უნდა მოიყვანოთ) და შემდეგ უკვე
შესაძლებელია ისეთი პროცედურის შექმნა, რომელიც შენს მიერ დაწერილი პროცედურის მაგალითზე გააკეთებს ავტომატურ გენერირებას ნებისმიერი ცხრილისათვის.

ქუოტა (Quote):
reziko Offline
#4 Posted : Friday, August 26, 2011 2:05:00 PM

Rank: Member

Medals:

Groups: Registered
Joined: 9/13/2010
Posts: 13
Points: 39
Location: Georgia, Tbilisi

Thanks: 1 times
Was thanked: 0 time(s) in 0 post(s)
ამოცანა მაქვს ესეთი.

არის ცხრილი მაგალითად Persons შემდეგი ველებით:

[PersonID] [int] IDENTITY(1,1) NOT NULL,
[FirstName] [nvarchar](150) NULL,
[LastName] [nvarchar](150) NULL,
[PersonalNumber] [nvarchar](50) NULL,
[Gender] [int] NULL,
[DOB] [datetime] NULL,
[CitizenshipID] [int] NULL,
[RegAddress] [nvarchar](250) NULL,
[Address] [nvarchar](250) NULL

ამ ცხრილშ შეიძლება მე რაღაც ველები დამემატოს კიდე რომელიც წინასწარ არ ვიცი, ველების დამატებისას შესაბამისად მეცვლება პროცედურები დამატება რედაქტირების.
ამიტომ მჭირდება პროცედურა რომელიც ცხრილში გააკეთებს Alter-ს და პროცედურებსაც შესაბამისად გადააკეთებს. ესაა ჩემი ძრირთადი ამოცანა.

მეორე ვარიანტია რომ ცხრილებს ხელით გადავაკეთებ და უბრალოდ პროცედურა მქონდეს ისეთი რომ ცხრილი მოიტიტო და დამატება რედაქტირების პროცედურა ტიტონ დააგენერიროს.
vajaGM Offline
#5 Posted : Friday, August 26, 2011 2:30:49 PM

Rank: Administration

Medals:

Groups: Administrators
Joined: 10/20/2012
Posts: 106
Points: 327
Location: Tbilisi

Thanks: 0 times
Was thanked: 0 time(s) in 0 post(s)
შევქმნათ სატესტო ცხრილი :
BB კოდი:


IF  EXISTS (SELECT * FROM sys.objects WHERE object_id = OBJECT_ID(N'[dbo].[Persons]') AND type in (N'U'))
DROP TABLE [dbo].[Persons]
GO
SET ANSI_NULLS ON
GO

SET QUOTED_IDENTIFIER ON
GO

CREATE TABLE [dbo].[Persons](
    [PersonID] [int] IDENTITY(1,1) NOT NULL,
    [FirstName] [nvarchar](150) NULL,
    [LastName] [nvarchar](150) NULL,
    [PersonalNumber] [nvarchar](50) NULL,
    [Gender] [int] NULL,
    [DOB] [datetime] NULL,
    [CitizenshipID] [int] NULL,
    [RegAddress] [nvarchar](250) NULL,
    [Address] [nvarchar](250) NULL,
CONSTRAINT [PK_Persons] PRIMARY KEY CLUSTERED
(
    [PersonID] ASC
)WITH (PAD_INDEX  = OFF, STATISTICS_NORECOMPUTE  = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS  = ON, ALLOW_PAGE_LOCKS  = ON) ON [PRIMARY]
) ON [PRIMARY]

GO



-- დავაგენერიროთ ამ ცხრილისთვის პროცედურა

BB კოდი:
EXEC [dbo].[GenerateIUDGscripts_tsp] @TBL = 'Persons'


-- რეზულტატი
-- =============================================
-- DROP PROCEDURES FOR tsp
-- OF TABLE Persons
if exists (select * from dbo.sysobjects where id = object_id(N'[dbo].[tsp_Persons]') and OBJECTPROPERTY(id, N'IsProcedure') = 1)
drop procedure [dbo].[tsp_Persons]
GO
-- =============================================
GO
-- =============================================
-- STORED PROCEDURE TO INSERT(0),UPDATE(1),DELETE(2),GET(3x)
-- THE TABLE Persons
-- GENERATED BY : APEX GROUP
-- GENERATED ON :Aug 26 2011 2:31PM
-- =============================================
CREATE PROCEDURE tsp_Persons
(
@iud tinyint = 3, -- INSERT(0),UPDATE(1),DELETE(2),GET(3x)
@PersonID [integer] = null OUTPUT,
@FirstName [nvarchar](300) = null,
@LastName [nvarchar](300) = null,
@PersonalNumber [nvarchar](100) = null,
@Gender [integer] = null,
@DOB datetime = null,
@CitizenshipID [integer] = null,
@RegAddress [nvarchar](500) = null,
@Address [nvarchar](500) = null
)
AS
IF @iud between 0 and 1 -- INSERT OR UPDATE ACTION
BEGIN
DECLARE @RetVal TABLE
(
[PersonID] [integer]
);
IF @iud = 0 -- INSERT
INSERT INTO Persons
(
[FirstName],
[LastName],
[PersonalNumber],
[Gender],
[DOB],
[CitizenshipID],
[RegAddress],
[Address]
)
OUTPUT INSERTED.[PersonID] INTO @RetVal
VALUES
(
@FirstName,
@LastName,
@PersonalNumber,
@Gender,
@DOB,
@CitizenshipID,
@RegAddress,
@Address
)
IF @iud = 1 -- UPDATE
UPDATE Persons SET
[FirstName] = @FirstName,
[LastName] = @LastName,
[PersonalNumber] = @PersonalNumber,
[Gender] = @Gender,
[DOB] = @DOB,
[CitizenshipID] = @CitizenshipID,
[RegAddress] = @RegAddress,
[Address] = @Address
OUTPUT INSERTED.[PersonID] INTO @RetVal
WHERE
[PersonID] = @PersonID
SELECT TOP (1) @PersonID = [PersonID] FROM @RetVal
END
ELSE
BEGIN
IF @iud = 2 -- DELETE
DELETE FROM Persons
WHERE ([PersonID] = @PersonID)
END
IF @iud = 3 -- GET
SELECT
[PersonID],
[FirstName],
[LastName],
[PersonalNumber],
[Gender],
[DOB],
[CitizenshipID],
[RegAddress],
[Address]
FROM Persons
WHERE
[PersonID] = @PersonID OR @PersonID is null
GO
File Attachment(s):
GenerateIUDGscripts_tsp.txt (20kb) downloaded 7 time(s).
ქუოტა (Quote):
reziko Offline
#6 Posted : Friday, August 26, 2011 3:42:43 PM

Rank: Member

Medals:

Groups: Registered
Joined: 9/13/2010
Posts: 13
Points: 39
Location: Georgia, Tbilisi

Thanks: 1 times
Was thanked: 0 time(s) in 0 post(s)
Drop-ის შემთხვევაში მე თუ მაქვს მონაცემები უკვე ამ ცხრილში დამეკარგება, რამე სხვა არსებოსბ რომ Drop-ის გარეშე მოხდეს ცხრილის Alter- ?
vajaGM Offline
#7 Posted : Friday, August 26, 2011 3:59:05 PM

Rank: Administration

Medals:

Groups: Administrators
Joined: 10/20/2012
Posts: 106
Points: 327
Location: Tbilisi

Thanks: 0 times
Was thanked: 0 time(s) in 0 post(s)
ქუოტა (Quote):
Drop-ის შემთხვევაში მე თუ მაქვს მონაცემები უკვე ამ ცხრილში დამეკარგება, რამე სხვა არსებოსბ რომ Drop-ის გარეშე მოხდეს ცხრილის Alter- ?


რატო აკეთებ ცხრილის Drop-ს ? მე ის უბრალოდ მაგალითისთვის დაგიწერე, რომ თავიდან ცხრილი მქონოდა პროცედურის შესასრულებლად.
ცხრილი რა სახითაც გინდა ხელით დააკორექტირე დესიგნერიდან, გინდა დაამატე და გინდა მოუშალე სვეტები.
მერე ადექი და გაუშვი პროცედურის გენერაცია და ის ახალი ცხრილისთვის ჩამოგიყალიბებს პროცედურას, ძველს მოშლის და ახალს სექმნის, რაც შენ ხელს არაფერში არ გიშლის...
ქუოტა (Quote):
reziko Offline
#8 Posted : Tuesday, September 06, 2011 2:52:58 PM

Rank: Member

Medals:

Groups: Registered
Joined: 9/13/2010
Posts: 13
Points: 39
Location: Georgia, Tbilisi

Thanks: 1 times
Was thanked: 0 time(s) in 0 post(s)
დიდი მადლობა.
Users browsing this topic
Guest
ფავორიტებში დამატება
Forum Jump  
თქვენ არ შეგიძლიათ დაწეროთ ახალი თემა ამ ფორუმში.
თქვენ არ შეგიძლიათ გასცეთ პასუხი, თემას, ამ ფორუმში .
თქვენ არ შეგიძლიათ წაშალოთ თქვენი პოსტი ამ ფორუმში.
თქვენ არ შეგიძლიათ ჩაასწოროთ თქვენი პოსტი ამ ფორუმში.
თქვენ არ შეგიძლიათ შექმნათ გამოკითხვა ამ ფორუმში.
თქვენ არ შეგიძლიათ ხმის მიცემა ამ ფოუმში.

YAFVision Theme by Jaben Cargman (Tiny Gecko)
Powered by YAF | YAF © 2003-2009, Yet Another Forum.NET
This page was generated in 2.614 seconds.