sghweb:
سلام
من ميخوام كه در پايگاه اوراكل 9i پارامترهايي رو تنظيم كنم
مثل : NLS_Sort * NLS_Calendar
در قسمت Instance & Database تونستم اين كارو انجام بدم (توسط فايل ora<sid>.ini )
ولي در قسمت Session كه براي هر كاربر هست نتونستم
و بايد هر بار مثلا دستور زير رو اجرا كنم :
Alter session Set NLS_Sort=Persian
Alter Session Set NLS_Calendar=Persian

كه پس از خروج از برنامه دوباره اين پارامترها به جاي اولشون بر ميگردن

اطلاعات ديگه :

SID : o9i
Version : 9.0.1.0.1
NLS_Lang = American-America.ar8mswin1256

کوروش:
در اين زمينه آقای رجبی توضيحات کاملی داده اند، فکر کنم تکرارش، صحيح نباشه.
از وبلاگ ايشون استفاده کن:
http://mrajabi.blogspot.com
توی آرشيوش پيدا ميکنی مباحث مربوط به فارسی در اوراکل

sghweb:
من قبلا اين سوال رو از ايشون هم پرسيدم
ولي نتونستيم اين مورد رو حل كنيم
در ضمن در وب لاگ ايشون در ضمينه تنطيم اين مقادير
صحبتي نشده (بصورت دايمي)

کوروش:
چه مشکلی پيش مياد اگه هر بار اين مقادير رو Set کنی؟

sghweb:
درست
من براي همين مطلب يك Procedure تهيه كردم و اونو در اول برنامه قراردادم
تا مقادير تنظيم شوند
ولي در مواردي (مثلا در ASP ) نتونستم اين كار رو انجام بدم
ولي در Oracle Forms Developer 6i با اين مسئله مشكلي نداشتم

به هر حال من بدنبال قسمتي در اوراكل هستم كه به محض ورود كاربر
اين مقادير از قبل تنظيم شده باشند ويا حداقل به محض ورود كاربر ،يك procedure
براي هر كاربر اجرا شود
درست مثل ويندوز 2000 كه براي هر كاربر ميشه يك اسكريپت رو بعد از ورودش اجرا كرد

من يدونه trigger پيدا كردم كه فكر كنم اگر دستور alter session رو اونتو بزارم درست
بشه، ولي نمي تونم اونو تغيير بدم

[code:1]TRIGGER LBACSYS.lbac$logon
AFTER LOGON ON DATABASE
BEGIN
LBACSYS.lbac_events.logon(dbms_standard.login_ user);
END;



TRIGGER LBACSYS.lbac$logon
AFTER LOGON ON DATABASE
BEGIN
LBACSYS.lbac_events.logon(dbms_standard.login_ user);
-- for example :
--alter session set nls_sort='arabic';
END; [/code:1]

کوروش:
دستور alter session يك دستور DDL به شمار مي آيد و نميتواند بطور مستقيم در دستورات PL/SQL مانند Trigger بكار رود مگر آنكه از طريق پكيج DBMS_SQL و يا DBMS_DDL استفاده شود.

راه ديگر استفاده از پارامتر سوم در دستور to_char ميباشد. براي مثال :

[code:1]Select to_char(sysDate,'YY/MM/DD','NLS_Calendar=persian')
From Dual; [/code:1]


پاسخ از: شهرام سلامي
مدير عامل شركت پارسيكام سامانه
http://www.parsicom.com



موضوعات مشابه: