إنتقال للمحتوى

  • تسجيل الدخول عبر الفيس بوك تسجيل الدخول عبر تويتر Log In with LinkedIn Log In with Google      تسجيل دخول    
  • إنشاء حساب

صورة
- - - - -

مشكلة Cursor مع Sequence Number


1 رد (ردود) على هذا الموضوع

#1 issaka_adams

issaka_adams

    عضو

  • الأعضــاء
  • 5 مشاركة

تاريخ المشاركة 21 June 2006 - 09:46 PM

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

انا عامل packge ومنها مستدعى إجراء procedure
حصيلة الموضوع أنو فى نهاية package..

عندى جمله

open MyCursor for select MySequence.CurrVal from dual;

هذه الجملة أعطتنى خطأ .... مع العلم انى استخدم Visual basci.Net
هذا الخطا هو :

MySequence.CurrVal is not define is this session

لا اعلم ما الخطأ.....

قمت باتبدال MySequence.CurrVal

ووضعت .NextVal

كعمل اختبار لل Sequence

عملت بطريقة صحيحة

لاكن المشكلة واقعة على CurrVal

أفيدونى أفادكم الله ...

هذا هو المتال ...

#2 issaka_adams

issaka_adams

    عضو

  • الأعضــاء
  • 5 مشاركة

تاريخ المشاركة 21 June 2006 - 09:56 PM

-----------------------------------إسقاط الأرقام الديناميكية-------------------------------

Drop Sequence Seq_Product;
Drop Sequence Seq_Category;
Drop Sequence Seq_Measurement;
Drop Sequence Seq_Company;


-----------------------------------تكوين الأرقام الديناميكية-------------------------------
Create Sequence Seq_Product
Start with 1
increment by 1
NoMaxValue;

Create Sequence Seq_Category
Start with 1
increment by 1
NoMaxValue;

Create Sequence Seq_Measurement
Start with 1
increment by 1
NoMaxValue;

Create Sequence Seq_Company
Start with 1
increment by 1
NoMaxValue;

-- ---------------------------------إسقاط الجداول-------------------------------

Drop table Product;
Drop table Category;
Drop table Measurement;
Drop table Company;

-----------------------------------تكوين الجداول-------------------------------

--جدول الشركات المصنعة

Create table Company
(
ID number(10),
CodeNumber number(10) null,
Description nvarchar2(50) Not Null,
CreationDate Date Default SysDate,
EndServiceDate Date Default Null,
CONSTRAINT Company_ID_pk PRIMARY KEY(ID)
) ;

--جدول الوحدات

Create table Measurement
(
ID number(10),
CodeNumber number(10) null,
Description nvarchar2(50) Not Null,
CreationDate Date Default SysDate,
EndServiceDate Date Default Null,
CONSTRAINT Measurement_ID_pk PRIMARY KEY(ID)
) ;

--جدول المجموعات

Create table Category
(
ID number(10),
CodeNumber number(10) null,
Description nvarchar2(50) Not Null,
ParentId number(10) references Category(ID),
CreationDate Date Default SysDate,
EndServiceDate Date Default Null,
CONSTRAINT Category_ID_pk PRIMARY KEY(ID)
);

--جدول الأصناف

Create table Product
(
ID number(10),
CategoryId number(10) Not null,
CodeNumber number(10) null,
Description nvarchar2(50) Not Null,
MeasurementId number(10) Not null,
CompanyId number(10) Not null,
BarCode nvarchar2(50) Not Null,
SellPrice number(5,3),
BuyPrice number(5,3),
MinRequest number(4),
Balance number(4),
CreationDate Date Default SysDate,
EndServiceDate Date Default Null,
CONSTRAINT Product_ID_pk PRIMARY KEY(ID),
CONSTRAINT Product_CategoryId_fk FOREIGN KEY (CategoryId)
REFERENCES Category(ID),
CONSTRAINT Product_MeasurementId_fk FOREIGN KEY (MeasurementId)
REFERENCES Measurement(ID),
CONSTRAINT Product_CompanyId_fk FOREIGN KEY (CompanyId)
REFERENCES Company(ID)
) ;

-----------------------------------الإضافات التلقائية-------------------------------

--جدول المجموعات

insert into Category(ID,CodeNumber,Description,ParentId)
values(Seq_Category.NextVal,1,'Product Groups',1);

insert into Category(ID,CodeNumber,Description,ParentId,EndServiceDate)
values(Seq_Category.NextVal,2,'مواد غذائية',
1,'20/06/06');

insert into Category(ID,CodeNumber,Description,ParentId)
values(Seq_Category.NextVal,3,'معلبات',
1);

insert into Category(ID,CodeNumber,Description,ParentId)
values(Seq_Category.NextVal,4,'فواكه',
1);

insert into Category(ID,CodeNumber,Description,ParentId)
values(Seq_Category.NextVal,5,'حلويات',
4);

-----------------------------------الإجراءات------------------------------

--بــــــاكج الأصنــــــــــــاف

CREATE OR REPLACE PACKAGE ProductPkg AS
TYPE Product_cursor IS REF CURSOR ;
Procedure GetProduct (io_cursor1 IN OUT Product_cursor);
END ProductPkg;
/

CREATE OR REPLACE PACKAGE BODY ProductPkg AS
Procedure GetProduct (io_cursor1 IN OUT Product_cursor)
IS
P_cursor Product_cursor;
BEGIN
OPEN P_cursor FOR
SELECT * from Product;
io_cursor1 := P_cursor;
END GetProduct;
END ProductPkg;
/


--بــــــاكج مجموعات الأصناف

CREATE OR REPLACE PACKAGE CategoryPkg AS
TYPE Category_cursor IS REF CURSOR ;

Procedure GetCategory
(
ID IN Number Default Null,
CodeNumber IN Number Default Null,
Description IN nvarchar2 Default Null,
ParentId IN Number Default Null,
WholeCategory IN Number Default Null,
io_cursor2 IN OUT Category_cursor
);

Procedure EditCategory
(
ID IN Number Default Null,
CodeNumber IN Number Default Null,
Description IN nvarchar2 Default Null,
ParentId IN Number Default Null,
WholeCategory IN Number Default Null,
Del IN Number Default Null,
io_cursor2 IN OUT Category_cursor
);

END CategoryPkg;
/

CREATE OR REPLACE PACKAGE BODY CategoryPkg AS

Procedure GetCategory
(
ID IN Number Default Null,
CodeNumber IN Number Default Null,
Description IN nvarchar2 Default Null,
ParentId IN Number Default Null,
WholeCategory IN Number Default Null,
io_cursor2 IN OUT Category_cursor
)

IS
C_cursor Category_cursor;
SqlString VARCHAR2(2000);
BEGIN

if GetCategory.WholeCategory is Not Null then
SqlString := 'SELECT ID,CodeNumber,Description,ParentId from Category where 1=1';
else
SqlString := 'SELECT ID,CodeNumber,Description,ParentId from Category where EndServiceDate is Null';
end if;

IF GetCategory.ID is not Null then
SqlString := SqlString || ' and Category.ID = ' || GetCategory.ID ;
end if;

IF GetCategory.CodeNumber is not Null then
SqlString := SqlString || ' and Category.CodeNumber = ' || GetCategory.CodeNumber ;
end if;

IF GetCategory.Description is not Null then
SqlString := SqlString || ' and Description= ' || '''' || GetCategory.Description || '''' ;
end if;

IF GetCategory.ParentId is not Null then
SqlString := SqlString || ' and Category.ParentId = ' || ' GetCategory.ParentId ' ;
end if;

OPEN C_cursor FOR SqlString;
io_cursor2 := C_cursor;

END GetCategory;

Procedure EditCategory
(
ID IN Number Default Null,
CodeNumber IN Number Default Null,
Description IN nvarchar2 Default Null,
ParentId IN Number Default Null,
WholeCategory IN Number Default Null,
Del IN Number Default Null,
io_cursor2 IN OUT Category_cursor
)

is

C_cursor Category_cursor;
SqlString VARCHAR2(2000);
a long;
Begin

--المشكلة تكمن هنا يا أصدقاء

OPEN C_cursor FOR select Seq_Category.Currval,Description from Category Where Category.ID=1;

io_cursor2 := C_cursor;
End EditCategory;

END CategoryPkg;
/