Visualizzazione dei risultati da 1 a 7 su 7
  1. #1

    [SQL SERVER 2000] text 16

    salve io ho un problema strano. solitamente in mysql il campo text ha una grandezza enorme mentre in sqlserver 2000 si imposta un campo text massimo con una lnghezza 16(penso 2^16), troncandomi ovviamente tutti i testi lunghi.
    ho provato ad inserire un campo ntext ma mi da un errore. in ogni caso come faccio a risolvere questo tipo di problema???
    grazie

  2. #2
    Utente di HTML.it L'avatar di comas17
    Registrato dal
    Apr 2002
    Messaggi
    6,522
    I campi di tipo text (o ntext) sono molto particolari (sono in sostanza dei puntatori) ed hanno una gestione, anche nelle normali operazioni, diversa dal solito

    Sei sicuro innanzitutto che non ti basti un varchar ? in sql server 2000 la massima lunghezza di un varchar è 8000 caratteri

    http://www.mssqlcity.com/Articles/Ge..._data_type.htm


    Qui trovi qualche esempio di trattamento dei campi di tipo text

    http://decipherinfosys.wordpress.com...in-sql-server/

  3. #3
    salve non ho ben capito cosa devo fare
    io ho questa tabella
    "int_articoli" coni seguenti campi
    id int identity
    data datetime
    titolo varchar
    testo text

    devo inserire un articolo molto grande nella colonna text.
    cosa devo fare???

  4. #4
    Utente di HTML.it L'avatar di comas17
    Registrato dal
    Apr 2002
    Messaggi
    6,522
    Intanto, cosa vuol dire "molto grande" ?

    Se la dimensione è inferiore ad 8000 caratteri puoi modificare il tipo di dato del campo testo e metterlo varchar(8000) così potrai usare le normali istruzioni SQL

    insert into tabella(testo) values('testo molto lungo, eccetera eccetera...')


    Se invece vuoi/devi usare un campo di tipo text puoi inserire "normalmente" un record (senza la parte di tipo text) ed andare poi ad aggiornarlo mediante l'istruzione writetext

    devi innanzitutto definire una variabile "puntatore"

    DECLARE @ptr varbinary(16)

    poi ti fai restituire il suo valore

    SELECT @ptr = TEXTPTR(testo) FROM tabella WHERE (e qui indichi l'id del record appena inserito)

    e poi usi il writetext

    WRITETEXT tabella.testo @ptr ‘il tuo testo molto lungo...’

  5. #5
    considera anche la possibilità di passare ad una versione successiva di M$SQL (2005 o 2008) che hanno il tipo varchar(max) che a) si usa come qualunque altro campo, b) non è in un'area separata e quindi viene backup-ato, c) può essere usato come campo di ricerca.

  6. #6
    Utente di HTML.it L'avatar di XWolverineX
    Registrato dal
    Aug 2005
    residenza
    Prague
    Messaggi
    2,563
    E poi R2 2008 Express è gratis.
    "Se proprio devono piratare, almeno piratino il nostro." (Bill Gates)

    "Non è possibile che 2 istituzioni statali mi mettano esami nello stesso giorno." (XWolverineX)

    http://xvincentx.netsons.org/programBlog

  7. #7
    salve ho fatto questa query
    $query="DECLARE @ptr varbinary(16)
    SELECT @ptr = TEXTPTR(testo) FROM int_articoli WHERE id='5'
    WRITETEXT int_articoli.testo @ptr 'fabio lombardi' ";
    $query_id = mssql_query($query,$connessione);

    ma mi restituisce questo errore:
    Warning: mssql_query() [function.mssql-query]: message: Alla funzione WriteText è stato passato un valore textptr Null (puntatore di tipo text, ntext o image). (severity 16) in D:\EasyPHP-5.3.2i\www\codapIntranet\articoli\admin\aggiungi-articolo.php on line 54

    cosa devo fare?

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2025 vBulletin Solutions, Inc. All rights reserved.