Remove string before dot operator in table columns

 
Hello All,
            I have a table with column names as "dbo.abc.sno","dbo.abc.sname","dbo.abc.dept".I want to change the columns names of the table as "sno","sname","dept".Can
you please share me the script for it.

DBA Developer,
this shud help for dynamic column name renaming:
--Sample table
create table abc
[dbo.abc.sno] int,
[dbo.abc.sname] varchar(255),
[dbo.abc.dept] varchar(255)
insert abc select 1,'jk','IT'
insert abc select 99,'jay','CSE'
select
identity(int,1,1) as id
,object_name(object_id) as table_name
,name as old_name
/*below mentioned expression to be built as per need. This one,
converts 'dbo.abc.sno' to 'sno'*/
,right(name,charindex('.',reverse(name))-1) as new_name
into #temp
from sys.columns
where object_id=object_id('abc')
declare @i int,@n int,@sql nvarchar(max)
set @i=1
set @n=(select count(*) from #temp)
while(@i<=@n)
begin
select @sql='EXEC sp_rename '''+table_name+'.['+old_name+']'','''+new_name+''',''column'''
from #temp
where id=@i
-- print @sql
EXEC(@sql)
set @i=@i+1
end
--cleanup
drop table #temp
drop table abc
Thanks,
Jay
<If the post was helpful mark as 'Helpful' and if the post answered your query, mark as 'Answered'>

Similar Messages

  • Remove/Hide sort for one of the table column

    Hi all,
       I have applied the sort functionality for the table control. But for only column i dont need the sort function.
      I have tried with the below code before doing sorting...but i dont see any result.... 
    ONACTIONSORT
    data : gr_col type ref to CL_WD_ABSTR_TABLE_COLUMN.
    CALL METHOD wd_this->table1->REMOVE_GROUPED_COLUMN
    EXPORTING
       id         = 'TABLECOLUMN'
       index      = '8'
    receiving
    THE_GROUPED_COLUMN = gr_col
    wd_this->table_control1->apply_sorting( ).. 
    Could somebody suggest me how can to remove the sort function for a particular column.
    Regards
    Sireesha.

    Hi manas,
      Thank u so much. Its working fine.
      points assigned to you....
    Regards
    sireesha.

  • Manipulate String  before  to save in column type LONG

    Hi
    I have a procedure that save data in table, but a column is LONG type. and string will be save is a HTML , I need to change a value before to save table
    My ask is:
    Can I search for String Tags inside this string?, my table name is TAble_Target and parameter P_DS_BODY is Long type
    CREATE OR REPLACE PROCEDURE WKFPR_SAVE_MAIL
        P_ID_EVENTO      IN TABLE_TARGET.ID_EVENTO%TYPE
       ,P_CD_USER        IN TABLE_TARGET.CD_USUARIO%TYPE    ----IS LONG
       ,P_DS_BODY        IN TABLE_TARGET.DS_CORPO%TYPE
       ,P_DS_SUBJECT     IN TABLE_TARGET.DS_ASSUNTO%TYPE DEFAULT NULL
    IS
    ..

    riedelme wrote:
    muttleychess wrote:
    Hi
    I have a procedure that save data in table, but a column is LONG type. and string will be save is a HTML , I need to change a value before to save table
    My ask is:
    Can I search for String Tags inside this string?, my table name is TAble_Target and parameter P_DS_BODY is Long type
    CREATE OR REPLACE PROCEDURE WKFPR_SAVE_MAIL
    P_ID_EVENTO      IN TABLE_TARGET.ID_EVENTO%TYPE
    ,P_CD_USER        IN TABLE_TARGET.CD_USUARIO%TYPE    ----IS LONG
    ,P_DS_BODY        IN TABLE_TARGET.DS_CORPO%TYPE
    ,P_DS_SUBJECT     IN TABLE_TARGET.DS_ASSUNTO%TYPE DEFAULT NULL
    IS
    If you possibly can ditch the long and use a CLOB instead. You are probably working with a legacy application and are stuck with the LONG but, again, if you possibly can use a CLOB instead. They are much easier to work with.
    LONG in PL/SQL have a maximum length of 32760 bytes, 8 less than a VARCHAR2 (!). If your data is longer than that you will have to figure out a way to get it all. LONGS in the database can be up to 2G - 1 bytes.
    In PL/SQL you should be able to use a function to search the LONG. You cannot use functions on LONG types in the database (one of many reasons to use CLOBs instead). You will get a value error if you are reading a database LONG and trying to put it into a PL/SQL long although there are ways to work around this (perform an internet search to find out what they are).
    II doing as
    CREATE OR REPLACE PROCEDURE WKFPR_SAVE_MAIL
        P_ID_EVENTO      IN TABLE_TARGET.ID_EVENTO%TYPE
       ,P_CD_USER        IN TABLE_TARGET.CD_USUARIO%TYPE    ----IS LONG
       ,P_DS_BODY        IN TABLE_TARGET.DS_CORPO%TYPE
       ,P_DS_SUBJECT     IN TABLE_TARGET.DS_ASSUNTO%TYPE DEFAULT NULL
    ISI created a variable type CLOB
    V_DS_BODY              CLOB;before to insert into table , I put
    V_DS_CORPO:=P_DS_BODY ;
       IF INSTR(P_DS_SUBJECT ,'Aprovação de Indenização') >0  THEN
         DBMS_APPLICATION_INFO.SET_MODULE
          (module_name => 'WKFPR_SAVE_MAILL'
          ,action_name => 'PRINCIPAL');
          SEI.ARCPR_TROCA_DESTINATARIO(V_DS_CORPO);
       END IF;   The parameter of SEI.ARCPR_TROCA_DESTINATARIO is CLOB
    create or replace procedure ARCPR_TROCA_DESTINATARIO(P_MENSAGEM *IN OUT* CLOB) is
    begin
       DBMS_APPLICATION_INFO.SET_MODULE
          (module_name => 'ARCPR_TROCA_DESTINATARIO'
          ,action_name => 'PRINCIPAL');
      P_MENSAGEM:='TROCADO NA PROCEDURE';
    end ARCPR_TROCA_DESTINATARIO;The String 'TROCADO NA PROCEDURE' is only Test and work fine , now I need to hard work manipulate P_MENSAGEM , It is a html I need to find some TAGs and
    change a user. Is possible to use DBMS_LOB.instr ? are there others functions ?
    example html
    <html><head><title>Aprovação de ARC</title></head><body><font face=arial size=2><b>974-17016/ugadiego-2013</b></font><br><br><table border=0><tr><td><b><font face=arial size=1>Data da Abertura</font></b></td>    <td><font face=arial size=1>8/3/2013</font></td><tr><td><b><font face=arial size=1>Quebra Produtividade</font></b></td>    <td><font face=arial size=1>Sim</font></td><tr><td><b><font face=arial size=1>Quantidade</font></b></td>    <td><font face=arial size=1>17,5</font></td><tr><td><b><font face=arial size=1>Valor</font></b></td>    <td><font face=arial size=1>R$ 17496</font></td><tr><td><b><font face=arial size=1>Forma de Indenização</font></b></td>    <td><font face=arial size=1>Nota de Crédito</font></td><tr><td><b><font face=arial size=1>Observação</font></b></td>    <td><font face=arial size=1>Evidenciado a não conformidade do produto em visita a cliente pela assessoria agronômica e qualidade.
    Produto apresenta-se empedrado com desuniformidade de grânulos e por consequência geração de finos e falha de óleo.
    Produto expedido com GDAP.
    Bonificar o cliente em 10% do valor da compra = R$ 17.496,00 ou em toneladas e fertilizantes  que podem ficar em forma de crédito para o cliente retirar em fertilizante para o plantio  da soja. Conforme relatório do Sr. Ademilson Palharin em anexo.</font></td><tr><td><b><font face=arial size=1>Centro de Custo</font></b></td>    <td><font face=arial size=1>CAS1I4671 - MISTURA E ENSAQUE I                     </font></td></table><hr><font face=arial size=2><b>Favor incluir uma Observação (Se necessário) e selecionar o botão desejado para aprovar ou reprovar essa Indenização.</b></font><FORM ACTION='http://10.176.10.123/pgAprovaARCServidor.asp' METHOD='GET' ><font face=arial size=2><div>Observações:</div><textarea name='txtObs' rows='4' cols='60' maxlength='4000'></textarea><br><br><div><input type='submit' value='Aprovar'  name='acao'> <input type='submit' value='Reprovar' name='acao'></div></font><br><hr><font face=arial size=2 >Essa é uma mensagem automática.<br>Favor não responder esse email</font><hr><input type='hidden' name='cdARC' value='17016' ><input type='hidden' name='cdSeq' value='1' ><input type='hidden' name='cdFase' value='Indenizacao' ><input type='hidden' name='dsResp' value='ustrenat' ><input type='hidden' name='dsCargo' value='Vice Presidência' ><input type='hidden' name='dsSolic' value='LESIANE CIESLAK' ><input type='hidden' name='index' value='3' ><input type='hidden' name='rowatu' value='3' ></FORM></body></html>Tia

  • How to remove multiple components border inside a single table column cell

    Hi,
    I'm adding multiple components to a table cell. To provide a good layout I'm using the following component hierarchy in a table column - table-->groupPanel--> gridPanel-->staticText Components 1 ..2 ..3. Now when I do preview in browser or run the app, the table shows up fine, but textComponent s(1,2,3) in the column are each surrounded by a border (which is the width of gridPanel border). Is there a way to get rid of this border?
    This only occurs when you add multiple components in table cell, under gridpanel layout component.
    I've tried searching for a way to remove the grid pane layout component border but couldn't find any info. Used style class border setting to not set but that doesn't help either. I checked forums, tutorial, learning sections etc., but no success. Any help or direction is appreciated..
    Thanks
    -Vinod

    Hi ,
    Can you please post the query ..what u have tried ...
    SQL&gt; select sub from coa1;
    SUB
    XY
    XY
    XY
    XY
    XY
    HXY
    HXY
    HXY
    8 rows selected.
    SQL&gt; select obj from coa1;
    OBJ
    AM
    AM
    AM
    AK
    AK
    AK
    ATK
    ATK
    8 rows selected.
    SQL&gt; SELECT OBJ FROM COA1
    2 UNION ALL
    3 SELECT SUB FROM COA1;
    OBJ
    AM
    AM
    AM
    AK
    AK
    AK
    ATK
    ATK
    XY
    XY
    XY
    OBJ
    XY
    XY
    HXY
    HXY
    HXY
    16 rows selected.
    SQL&gt; insert into coa2 (obj)
    2 (
    3 SELECT OBJ FROM COA1
    4 UNION ALL
    5 SELECT SUB FROM COA1
    6 );
    16 rows created.
    SQL&gt; select * from coa2;
    OBJ SUB MCU DOC F
    AM
    AM
    AM
    AK
    AK
    AK
    ATK
    ATK
    XY
    XY
    XY
    OBJ SUB MCU DOC F
    XY
    XY
    HXY
    HXY
    HXY
    16 rows selected.
    SQL&gt;
    i tried the same it worked fine .....
    so u can combine select and insert statements .. you can get the required result.....!
    Thanks
    Ananda
    Edited by: Ananda on Feb 2, 2009 7:38 PM
    Edited by: Ananda on Feb 2, 2009 7:52 PM

  • How to align a String value to the right side inside a table column?

    Hi,
    I have a text view inside a table column which is mapped to a string attribute. I need to align the text in the text view to the right hand inside the table column. But its always getting aligned towards the left side. I have tried by setting the <b>hAlign</b> property of Element properties of Text View to <b>right / forced right</b> but still the text is getting aligned to the left side.
    How do I align the String values in Text View towards the right hand side inside a Table Column?
    Thanks and Regards,
    Sayan Ghosh

    Hello Sayan,
    if i do get it right, you are adding an TextView element to a Table Cell. Then you should consider setting aligment within the particular cell. By calling:
    YourCell.setHorizontalAlignment(CellHAlign.RIGHT)
    regards.
    mz

  • How i pass table column  value to string variable or return to java applete

    Hi Master,
    How do I pass a table column value into string variable. See my code below:
    import java.sql.*;
    public class Waheed {
    public Waheed() {
    public static void main (String args [])
    String s = "9 23 45.4 56.7";
    System.out.println ("going for connection");
    // DriverManager.registerDriver (new oracle.jdbc.driver.OracleDriver());
    try{
    Class.forName("oracle.jdbc.driver.OracleDriver");
    Connection conn =
    DriverManager.getConnection("jdbc:oracle:thin:@fahim:1521:aamir","muhammad","mfa786");
    Statement stmt = conn.createStatement();
    ResultSet rset = stmt.executeQuery("select accid from accbal");
    System.out.println ("going for connection");
    while (rset.next())
    s= rset.getString("accid"); this line give me error
    System.out.println (rset.getString("accid"));
    System.out.println (s);
    catch(Exception e){
    e.printStackTrace();
    This line give me an error:
    s= rset.getString("accid");
    s is string variable
    Plese give me an idea how I can pass accid in s variable.
    Thanks.
    Aamir

    See the code sample in the following thread (try using upeercase).
    JDBC  connection
    Kuassi

  • Estimate index size on a table column before creating it

    Hi
    Is it possible to estimate the size of the index before actually creating it on a table column.
    I tried the below query. It gives size of the index after creating it.
    SELECT (SUM(bytes)/1048576)/1024 Gigs, segment_name
    FROM user_extents
    WHERE segment_name = 'IDX_NAME'
    GROUP BY segment_name.
    Can anyone through some light which system table will give this information.

    You can get an approximation by estimating the number of rows to be indexes, the average column lengths of the columns in the index, and the overheads for an index entry - once you have some reasonable stats on the table.
    I wrote a piece of code to demonstrate the method a few years ago - it's got some errors, but I've highlighted them in an update to the note: http://www.jlcomp.demon.co.uk/index_efficiency_2.html
    Regards
    Regards
    Jonathan Lewis
    http://jonathanlewis.wordpress.com
    http://www.jlcomp.demon.co.uk
    To post code, statspack/AWR report, execution plans or trace files, start and end the section with the tag {noformat}{noformat} (lowercase, curly brackets, no spaces) so that the text appears in fixed format.
    "Science is more than a body of knowledge; it is a way of thinking"
    Carl Sagan                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                           

  • Removing a table column

    I want to remove absentee type column in approve/review timesheets iview in MSS.
    Can any one tell how to achieve it?

    Table columns are easily hidden using backend customisation
    CATS regular >
    Approve Working Time >
    Define Approval Views
    In the IMG (transaction SPRO), go to
    - SAP Customizing Implementation Guide
      - Cross-Application Components
        - Time Sheet
          - Specific Setting for CATS regular
            - CATS regular
              - Approve Working Time
                - Define Field Selection for Individual Approval View
                - Define Field Selection for Detail View
    for view V_PT_FIELD_SEL_C
    Screen area     CTD
    Field selection SLIN

  • How to add/remove table columns dynamically?

    Please help urgently!

    Don't access the view layout (UI element references) in action event handlers. You have to place this code in wdDoModifyView().
    In the action handler, store the information needed (e.g. table column ID, insertion position, whatever) in some context attribute or in some member variable of the view.
    In wdDoModifyView(), check if table modification should be done, get the table instance using view.getElement(<tableID>), use the IWDTable API to modify the table.
    Finally, reset the flag or configuration data indicating that the table should have been modified.
    This is not really elegant, but that's the way it is...
    Armin

  • Remove Value Field from Operating Concern

    Hi all,
    I created a new value field in DEV and assigned it to the corresponding Operating Concern.
    Now, after some discussions, it is not necessary this value field.
    I want to "un-assign" from the Operating Concern they use.
    No data is being posted to this value field and nothing has been transported to QA yet.
    Is this possible? Any ideas?
    Thanks and Regards,
    Flower.

    I guess you can delete the value field as it was not transported to QA and PRD.
    Here is some information given by SAP.
    Deleting characteristics/value fields from an operating concern
    You can delete characteristics and value fields retrospectively from an operating concern that you have already activated. However, you should only use this deletion function for operating concerns that have not yet been used productively. You should also note that some database systems require the operating concern tables to be converted (database conversion) after the deletion has taken place if data had already been posted to the operating concern. Depending on the data volumes involved, the database conversion can take a matter of seconds or indeed several hours. Moreover, you cannot post data or run reports during the conversion. Due to integration, other applications are also affected when data is postedwith an assignment to profitability segments (such as settlement and direct assignment from FI/MM). If the operating concern has been transported to another system (such as the productive system), then the database conversion must also occur in that target system.
    Depending on the fields that were deleted, the following tables need to be converted (where xxxx = operating concern):
    Characteristics: CE1xxxx, CE2xxxx, CE4xxxx, CE4xxxx_ACCT, CE4xxxx_FLAG, and CE4xxxx_KENC
    Amount fields: CE1xxxx, CE2xxxx and CE3xxxx
    Quantity fields: CE1xxxx, CE2xxxx, CE3xxxx, CE4xxxx, CE4xxxx_ACCT, CE4xxxx_ACCT, CE4xxxx_FLAG, and CE4xxxx_KENC
    Before deleting fields from an operating concern with a large data volume (more that 10 000 records in a table), you should refer to the section "The Database Utility" in the ABAP dictionary documentation. This section describes the database conversion process.
    For database systems that do not require conversion (such as DB2 for AS/400, Informix, MSSQL), it can still take a considerable amount of time for the operating concern to be activated.
    To delete characteristics or value fields, perform the following activities:
    1. Delete the corresponding characteristics and value fields from Customizing in all clients (this includes forms, reports, planning layouts, and so forth). To locate characteristics and value fields, use the appropriate where-used list in the Customizing Monitor. You can access it by choosing Tools -> Analysis -> Check Customizing Settings. You can jump directly from the where-used list to the relevant Customizing transaction and then delete the appropriate field there.
    2. Switch to the screen for maintaining the data structure of an operating concern (Maintain operating concern).
    3. If you need to effect other changes to the datastucture for the operating concern before making any deletions, effect those changes and save the data structure.
    4. In order to be able to select the fields of the data structure, choose Extras -> Characteristics (or Value fields) -> Unlock.
    5. Select the characteristics and value fields to be deleted and remove them from the data structure with the "Reset fields" function.
    6. Reactivate the operating concern. The system starts by checking whether the operating concern contains any data and whether the fields to be deleted are still being used in any Customizing settings.
    7. If none of the fields are still in use, the system then starts the re-activation. If the operating concern does not contain any data or does not require the database system to be converted, the tables are activated. You are then able to activate the environment for the operating concern. In this case, the following activities no longer apply.
    If the operating concern already contains data, a system message tells you that the database needs to be converted. If you proceed, an activation log appears (at the top of the list).
    8. Analyze the activation log. If it only contains error messages telling you to convert the tables, proceed with the next activity.
    You must otherwise remove the cause of the errors before the tables can be converted. In this case, you should answer "No" to the next prompt, which asks whether the conversion transaction should start.
    9. If you still only receive error messages telling you to convert the tables, choose "Back" and start the conversion.
    10. Plan a job for the conversion. A list of the tables to be converted is shown for this. If the tables only contain a small amount of data (less than 10 000 records), then all the tables can be converted in one job. In that case, you can select all the tables.
    For larger tables, conversion should take place in several jobs. However, you should ensure that table CE4xxxx (where xxxx = operating concern) is the last table to be converted.
    Warning. No other changes can be made to the operating concern during the conversion.
    A copy of the table is generated during the conversion. The database system should have sufficient memory available for this copy.
    To schedule conversion as a job, use the "Schedule selections" function. You can display the current status of the conversion by selecting the "Refresh" icon. Tables disappear from the list once they have been converted sucessfully. If a conversion is taking a while, it is also possible to leave the transaction. You can then continue the conversion using DB requests -> Mass processing in one of the following ways:
    With the job overview. You access this by choosing System -> Services -> Jobs.
    Using the database utility transaction. You access this by choosing Utilities -> Database Utility in the ABAP Dictionary menu.
    You can use the status function to call up the status of the operating concern during operating concern maintenance. You need to activate all tables after conversion.
    11. To analyze errors that have occurred during the conversion, you can use the database utility transaction by choosing Extras -> Logs. The log has the same name as the conversion job: TBATG-date. You can also restart the conversion with this transaction.
    For more information on the database utility, choose Help -> Application help while still in the above transaction.
    12. Once you have activated all the tables in the operating concern, generate the operating concern environment from within operating concern maintenance.
    You can then use the operating concern again.
    If you want to transport the operating concern into a different system, see the section "Notes on transport"
    Note
    Hope this helps
    Thanks,
    Reddy
    Edited by: reddy  sap on Sep 11, 2009 6:58 PM
    Edited by: reddy  sap on Sep 11, 2009 7:00 PM

  • How to remove uncommitted changes made in a table through JAG?

    Hi,
    Is there any possibility to remove the uncommitted row from a Table through JAG.
    For Example,
    If I Click " AddRow " button in a Table and enters value for all the Attributes in that particular Row and if I click the " Cancel " Button, that newly added uncommitted row should be removed by refreshing the Particular page.
    Simillarly , if i update a column in a Row and press cancel button , the uncommitted value of that column should be rollBack to its commited value(ie., to its previous value).
    Thanks,

    You can generate a Delete? column in the table by setting the Group property Multi-Row Delete Allowed.
    Other than that, you can generate it through JAG by using custom generator templates, like described in section 4.7 of the JHeadstart Developer's Guide. You can for example drag and drop the Rollback operation of the Application Module as a button and call it a Cancel button.
    Hope this helps,
    Sandra Muller
    JHeadstart Team
    Oracle Consulting

  • What table column size is needed to accomodate Unicode characters

    Hi guys,
    I have encounter something which i dont understand and i hope gurus here will shed some light on me.
    I am running a non-unicode database and i decided to port the data over to a unicode database.
    So
    1) i export the schema out --> data.dmp
    2) then i create the unicode database + create a user
    3) then i import the schema into the database
    during the imp i can see that character conversion will take place.
    During importing of data into the unicode database
    I encounter some error
    saying column size is too small
    so i went to check the row that has the column value that is too large to fit in the table.
    I realise it has some [][][][] data.. so i went to the live non-unicode database and find the row. Indeed it has some [][][][] rubbish data which i feel that someone has inserted other language then english into the database.
    But regardless,
    I went to modify the column size to a larger size, now the row can be accommodated. However the data is still [][][].
    q1) why so ? since now my database is unicode, during the import, this column data [][][] should be converted to unicode already but i still have problem seeing what language it is.
    q2) why at the non-unicode database, the [][][] data can fit into the table column size, but on unicode database, the same table column size need to be increase ?
    q3) while doing more research on unicode, it was said that unicode character takes up 2 byte per character. Alot of my table data are exactly the same size of the table column size.
    E.g Name VARCHAR2(5);
    value - 'Peter'
    Now if converting to unicode, characters will take 2byte instead of 1, isnt 'PETER' going to take up 10byte ( 2 byte per character ),
    why is it that i can still accomodate the data into the table column ?
    q4) now with unicode database up, i will be supporting different language characters around the world. How big should i set my column size to ? the longest a name can get ? or ?
    Thanks guys!

    /// does oracle automatically "look" at the each and individual characters in a word and determine how much byte it should take.
    Characters usually originate from a keyboard, which has an associated keyboard layout and an associated character set encoding (a.k.a code page, a.k.a. encoding). This means, the keyboard driver knows that when a key with a letter "á" on it is pressed on a French keyboard, and the associated character set encoding is MS Code Page 1252 (Oracle name WE8MSWIN1252), then one byte with the value 225 is generated. If the associated character set encoding is UTF-16LE (standard internal Windows encoding), two bytes 225 and 0 are generated. When the generated bytes travel through APIs, they may undergo character set conversions from one encoding to another encoding. The conversion algorithms use translation tables to find out how to translate given byte sequence from one encoding to another encoding. In case of translation from WE8MSWIN1252 to AL32UTF8, Oracle will know that the byte sequence resulting from conversion of the code 225 should be 195 followed by 161. For a Chinese characters, for example when converting it from ZHS16GBK, Oracle knows the resulting sequence as well, and this sequence is usually 3 bytes.
    This is how AL32UTF8 data gets into a database. Now, when Oracle processes a multibyte string, and needs to look at individual characters, for example to count them with LENGTH, or take a substring with SUBSTR, it uses information it has about the structure of the character set. Multibyte character sets are of two type: fixed-width and variable-width. Currently, Oracle supports only one fixed-width multibyte character set in the database: AL16UTF16, which is Oracle's name for Unicode UTF-16BE encoding. It supports this character set for NCHAR/NVARCHAR2/NCLOB data types only. This character set uses two bytes per each character code. To find the next code, 2 is simply added to the string pointer.
    All other Oracle multibyte character sets are variable-width character sets, including AL32UTF8. In most cases, the length of each character code can be determined by looking at its first byte. In AL32UTF8, the number of 1-bits in the most significant positions in the first byte before the first 0-bit tells how many bytes a character has. 0 such bits means 1 byte (such codes are identical to 7-bit ASCII), 2 such bits mean two bytes, 3 bits mean 3 bytes, 4 bits mean four bytes. 1 bit (e.g. the bit sequence 10) starts each second, third or fourth byte of a code.
    In other ASCII-based multibyte character sets, the number of bytes is usually determined by the value range of the first byte. Bytes below 128 means a one-byte code, bytes above 128 begin a two- or three-byte sequence, depending on the range.
    There are also EBCDIC-based (mainframe) multibyte character sets, a.k.a shift-sensitive character sets, where a sequence of two-byte codes is introduced by inserting the SO character (code 14=0x0e) and ended by inserting the SI character (code 15=0x0f). There are also character sets, like ISO-2022-JP, which use more complicated byte sequences to define the length and meaning of byte sequences but Oracle supports them only in limited number of places.
    /// e.g i have a word with 4 character. the 3rd character will be a chinese character..the rest are ascii character
    /// will oracle use 4 byte per character regardless its ascii(english) or chinese
    No.
    /// or it will use 1 byte per english character then 3 byte for the chinese character ? e.g.total - 6 bytes taken
    It will use 6 bytes.
    Thnx,
    Sergiusz

  • BUG: Export DDL and Data fails for mixed case table/column names

    Hi there,
    I have found a bug in SQL Developer. See details below.
    Description:
    When "Export DDL and Data) function is used on a table/columns not named in UPPERCASE, sql generated by SQL Developer is invalid.
    Steps to reproduce:
    - open SQL Developer, connect to DB
    - make a table named "lowerCase" (in double quotes, so it won't be automatically changed to capital letters)
    - you may also add some columns, for example "lowerCol1", "UpCol2", ALLUPCOL3
    - add some data rows to the table
    - choose Tools -> Export DDL and Data
    - check exporting of tables and data, on "filter" tabs choose your "lowerCase" table
    - press "Apply"
    Error:
    Generated SQL contains invalid INSERTs: mixed-case table and columns are referenced without obligatory double quotes, which yields an error when generated script is executed (see below, relevant line is underlined)
    -- DDL for Table lowerCase
    CREATE TABLE "DBO_HT"."lowerCase"
    (     "lowerCol1" VARCHAR2(100),
         "UpCol2" VARCHAR2(100),
         "ALLUPCOL3" VARCHAR2(100)
    -- DATA FOR TABLE lowerCase
    -- FILTER = none used
    -- INSERTING into lowerCase
    Insert into lowerCase (lowerCol1,UpCol2,ALLUPCOL3) values ('lc','uc','auc');
    -- END DATA FOR TABLE lowerCase
    Remarks
    SQL Developer: version 1.2.1, build MAIN-32.13
    Oracle DBs: 9.2 & Express
    OS: Windows 2000 Professional
    If you need any more details/testing, let me know. I'd really appreciate a quick patch for this issue...
    Alternatively, do you know of any other simple way of copying a single database (it's called a schema in Oracle, right?) from one computer to another? Possibly something so simple like detaching->copying->reattaching mdf (data) files in SQL Server... I thought that this "Export DDL&Data" function will do, but as you can see I couldn't use it.
    I just need a simple solution that works - one operation on source to stuff, get the resulting files to other computer and one operation to have it running there... I think that such scenario is very basic, yet I just can't achieve it and I am simply not allowed to spend more time on it (read: our test project fails, my company rejects my "lobbying" and stays with MSSQL :/ )
    Thanks a lot & bye

    Thanks for your reply.
    ad. 1)
    You're right. I just wanted to give some very short feedback on my experiences with SQL Developer, so I didn't think starting new threads would be necessary, but as I was writing it became much bigger than I initially planned - sorry about that. I will make proper threads as soon as possible. Having "Edit post" button on this forum would also be useful.
    ad. 2)
    Generally, you're right - in most cases it's true that "switching DBMS is a major commitment" and "you will produce terrible code" if you don't learn the new one.
    However, I think that you miss one part of market here - the market that I think Express is also targeted on. I'd call it a "fire&forget databases" market; MySQL comes to mind as possibly most common solution here. It's the rather small systems, possibly web-accessed, whose data-throughput requirements are rather modest; the point is to store data at all, and not necesarily in fastest way, because given the amount of data that is used, even on low-end hardware it will work well enough. What's important here is its general ease of use - how easy is to set up such system, connect and access data, develop a software using it, how much maintenance is needed, how easy this maintenance is, how easy are the most common development tasks as creating a DB, moving a DB from test to production server etc. There, "how easy" directly translates to "how much time we need to set it up", which translates to "how much will the development will cost".
    Considering the current technology, switching the DBMS in such systems is not necesarily a major commitment and believe me that you will not produce terrible code. In many cases it's as simple as changing a switch in your ORM toolkit: hibernate.dialect = Hibernate.Dialect.OracleDialect vs MySQLDialect vs MsSql2005Dialect
    Therefore, in some part of market it's easy to switch DBMS, even on project-by-project basis. The reason to switch will appear when other DBMS makes life easier => development faster. From that point of view, I can understand my colleagues giving me an embarassing look and saying "come on, I won't read all these docs just to have db copied to test server". And it doesn't mean "they are not willing to learn anything new", it's just that they feel such basic task should have self-explaining solution that doesn't require mastering any special knowledge. And if they get such simple solutions somewhere else, it costs them nothing to change the hibernate dialect.
    I think Oracle did the great job with introducing the Express to this "fire&forget" market. The installation is a snap, it just works out of the box, nothing serious to configure, opposite to what I remember from installing and working on Oracle 9 a few years ago. In some places it's still "you need to start SQL*Plus and enter this script", but it's definitely less than before. I also find the SQL Developer a great tool, it can do most of what we need to do with the DB, it's also much better and pleasant to use over Oracle 9 tools. Still, a few basic things still require too much hassle, and I'd say taking your schema to another machine is one of them. So I think that, if you do it well, the "schema copy wizard" you mentioned might be very helpful. If I was to give any general advice for Express line of DB/tools, I'd say "make things simple" - make it "a DB you can't see".
    That's, IMHO, the way to attract more Express users.

  • Physical query not accessing Fact Table/Column

    Hi,
    I'm facing a weired issue. I have a report with 32 columns. 22 columns are from 8 dimensions and 10 columns from 3 Facts.
    But while observing the Physical query. Its not touching 1 particular Column coming from 1 Fact Table.
    So, in the query only 2 Fact columns are there and in the report its always Null value.
    When I'm adding a filter on that Fact Column to force Analytics to go and join with that Fact Table, Its not including that Fact Table/Column and producing a very funny query like the following:
    SELECT
    COLUMNS....
    FROM
    TABLES (8 DIMENSION AND 2 FACTS)
    GROUP BY COLUMNS....
    HAVING cast(NULL as DOUBLE PRECISION )>1234
    ================================
    "cast(NULL as DOUBLE PRECISION )>1234" - this is the filter, I have added on that Fact Column.
    Note- It may be because of RPD configurations/joins. But the system (Siebel Analytics 7.8) is in production for 2 years and 500 users using it and nobody reported any issue like this before.
    Can anyone please give me some helpful hint, idea, what is happening?
    Thanks in Advance
    Regards
    Sudipta

    Hi Kishore,
    Thanks for your reply.
    However, I did the analysis and found following, please let me know if your perspective is falling in the same line or not.
    Scenario:
    Suppose all the columns i'm trying to fetch, are coming from 5 dimensions [d1,d2,d3,d4,d5] (some of them are aliased table) and 3 fact tables [f1,f2,f3]
    Now, the report is not fetching data for c1 column which is coming from f3 fact table. Even f3 table is not included in the physical query.
    Now what i found that, there is a dimension suppose d3 which is not having any direct join with f3, but other facts like f1,f2 have joins with d3 table.
    If i remove the columns coming from d3 dimension from report, then f3 fact columns are getting populated in report.
    Problem:
    I need to provide a single physical query for that report, while those report columns are defined by the business.
    Questions:
    1. So is it really possible to create a query for that kind of report without changing the RPD design?
    2. If no, then is the only solution to split that report (i'm thinking) into 2-3 sub reports?
    Thanks all of you for replying and providing your thoughts.
    Regards
    Sudipta

  • Hiding and restoring table columns from file?

    how i handle hiding and unhiding columns in a jtable is that i have a checkbox for each column, depending on which is checked "on" the tablecolumn is found and added to a vector and removed from the table.
    when the checkbox is checked "off" this vector is searched for the correct tablecolumn, and then added back to the table. this works fine.
    when i close out of the program, i go thru the table and write the visible column names along with its size to file.
    when i re-open the program, i create the table normally, then go thru the file and hide(remove) the tablecolumns found in it..this works fine.
    but when i go back to this checkbox list and try to unhide the tablecolumn, i get an exception
    java.lang.IllegalArgumentException: Cannot format given Object as a Number
         at java.text.NumberFormat.format(NumberFormat.java:219)
         at java.text.Format.format(Format.java:133)
         at javax.swing.JTable$DoubleRenderer.setValue(JTable.java:3397)
         at javax.swing.table.DefaultTableCellRenderer.getTableCellRendererComponent(DefaultTableCellRenderer.java:160)
         at javax.swing.JTable.prepareRenderer(JTable.java:3731)
         at javax.swing.plaf.basic.BasicTableUI.paintCell(BasicTableUI.java:1149)
         at javax.swing.plaf.basic.BasicTableUI.paintCells(BasicTableUI.java:1051)
         at javax.swing.plaf.basic.BasicTableUI.paint(BasicTableUI.java:974)
         at javax.swing.plaf.ComponentUI.update(ComponentUI.java:142)
         at javax.swing.JComponent.paintComponent(JComponent.java:541)
         at javax.swing.JComponent.paint(JComponent.java:808)
         at javax.swing.JComponent.paintChildren(JComponent.java:647)
         at javax.swing.JComponent.paint(JComponent.java:817)
         at javax.swing.JViewport.paint(JViewport.java:722)
         at javax.swing.JComponent.paintChildren(JComponent.java:647)
         at javax.swing.JComponent.paint(JComponent.java:817)
         at javax.swing.JComponent.paintWithOffscreenBuffer(JComponent.java:4787)
         at javax.swing.JComponent.paintDoubleBuffered(JComponent.java:4740)
         at javax.swing.JComponent._paintImmediately(JComponent.java:4685)
         at javax.swing.JComponent.paintImmediately(JComponent.java:4488)
         at javax.swing.RepaintManager.paintDirtyRegions(RepaintManager.java:410)
         at javax.swing.SystemEventQueueUtilities$ComponentWorkRequest.run(SystemEventQueueUtilities.java:117)
         at java.awt.event.InvocationEvent.dispatch(InvocationEvent.java:178)
         at java.awt.EventQueue.dispatchEvent(EventQueue.java:454)
         at java.awt.EventDispatchThread.pumpOneEventForHierarchy(EventDispatchThread.java:201)
         at java.awt.EventDispatchThread.pumpEventsForHierarchy(EventDispatchThread.java:151)
         at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:145)
         at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:137)
         at java.awt.EventDispatchThread.run(EventDispatchThread.java:100)before i unhide the columns, the table is already populated with values. so it might have something to do with that...cuz there is no problems unhiding them if the table contains no data
    any ideas?
    thanks

    If you're interested, this method hides a table column without any modifications of its content:
       public static void setTableColumnVisible(JTable table, int col,                                                                             
                                                  boolean visible, int width) {
          try {
             TableColumn column = table.getColumnModel().getColumn(col);
             if (!visible) {
                column.setMinWidth(0);
                column.setWidth(0);
                column.setMaxWidth(0);
                column.setPreferredWidth(0);
             else {
                column.setWidth(width);
                column.setPreferredWidth(width);
          catch(Exception e) {
             e.printStackTrace();
       }Method use:
    . setTableColumnVisible(table, col, false, 0) hides the column
    . setTableColumnVisible(table, col, true, 100) restores the column to its size of 100
    Hope this helped,
    Regards.

Maybe you are looking for