Foros del Web » Programación para mayores de 30 ;) » Bases de Datos General » SQL Server »

Set Quoted_identifier On

Estas en el tema de Set Quoted_identifier On en el foro de SQL Server en Foros del Web. Buenos dias, Estoy partiendo de una tienda virtual que funciona, a la cual le voy a añadir otras funcionalidades. Esta tienda virtual me viene con ...
  #1 (permalink)  
Antiguo 17/11/2005, 05:59
Avatar de moNTeZIon  
Fecha de Ingreso: enero-2005
Ubicación: Lliçà de Munt - BCN
Mensajes: 1.625
Antigüedad: 19 años, 3 meses
Puntos: 9
Set Quoted_identifier On

Buenos dias,
Estoy partiendo de una tienda virtual que funciona, a la cual le voy a añadir otras funcionalidades.
Esta tienda virtual me viene con unos scripts para crear la BD, llenarla de datos, crear el usuario que la va a utilizar, etc...
En un de los scripts, es donde se crean procedimientos almacenados, les pongo uno de ellos para que vean:
Código:
CREATE Procedure CMRC_ShoppingCartUpdate
(
    @CartID    nvarchar(50),
    @ProductID int,
    @Quantity  int
)
AS

UPDATE CMRC_ShoppingCart

SET 
    Quantity = @Quantity

WHERE 
    CartID = @CartID 
  AND 
    ProductID = @ProductID

GO
SET QUOTED_IDENTIFIER OFF 
GO
SET ANSI_NULLS ON 
GO
Pues bien, como este hay varios. Y al final de cada uno utiliza las instrucciones SET QUOTED_IDENTIFIER OFF y SET ANSI_NULLS ON que ahi es donde me pierdo.

Al finalizar cada procedimiento usa estas instrucciones, y segun el procedimiento a veces las pone a OFF, otras a ON...

Para qué sirven? Me lo pregunto porqué ahora estoy creando nuevos procedimientos almacenados y quiero irlos añadiendo a este script, para poder usarlo en posteriores ocasiones. A finalizar cada procedimiento de los que yo creo, no se si poner a ON o a OFF las instrucciones que os comento arriba. Es que me planteo si realmente debo utilizarlas o no... He creado muchos procedimientos almacenados y nunca habia utilizado estas instrucciones.

Muchas gracias por las respuestas.
Saludos.
__________________
..:: moNTeZIon ::..
  #2 (permalink)  
Antiguo 17/11/2005, 08:27
Avatar de Andres95
Colaborador
 
Fecha de Ingreso: diciembre-2004
Mensajes: 1.802
Antigüedad: 19 años, 4 meses
Puntos: 38
si estan al final de todas las instruccioes (es decir, si no se agrega la contraparte al inicio del procedure ) te diria que las ignores...

la de quoted identifier solo la he utilizado una vez.. y esto solo para facilitar la creacion de un script... ya que las variables varchar contenian apostrofes intermedios...

algo como

--- desactiva la restriccion de las comillas simples para identificadores
Declare @cadena varchar(100)
SET QUOTED_IDENTIFIER OFF
SET @cadena = "Mario Moreno 'Cantinflas' "
PRINT @cadena
SET QUOTED_IDENTIFIER ON
GO

-- Misma asignacion Sin uso de Quoted_Identifier
Declare @cadena varchar(100)
SET @cadena = 'Mario Moreno ''Cantinflas'''
PRINT @cadena
GO


--- Cuando son mas apostrofes y caracteres de otro tipo armar la cadena dinamicamente puede resultar un lio...
  #3 (permalink)  
Antiguo 17/11/2005, 12:48
Avatar de Mithrandir
Colaborador
 
Fecha de Ingreso: abril-2003
Mensajes: 12.106
Antigüedad: 21 años
Puntos: 25
Salvo casos muy particulares, ignorarlos no afecta en nada:
Cita:
SET QUOTED_IDENTIFIER
Causes Microsoft® SQL Server™ to follow the SQL-92 rules regarding quotation mark delimiting identifiers and literal strings. Identifiers delimited by double quotation marks can be either Transact-SQL reserved keywords or can contain characters not usually allowed by the Transact-SQL syntax rules for identifiers.

Syntax
SET QUOTED_IDENTIFIER { ON | OFF }

Remarks
When SET QUOTED_IDENTIFIER is ON, identifiers can be delimited by double quotation marks, and literals must be delimited by single quotation marks. When SET QUOTED_IDENTIFIER is OFF, identifiers cannot be quoted and must follow all Transact-SQL rules for identifiers. For more information, see Using Identifiers. Literals can be delimited by either single or double quotation marks.
.....
Cita:
SET ANSI_NULLS
Specifies SQL-92 compliant behavior of the Equals (=) and Not Equal to (<>) comparison operators when used with null values.

Syntax
SET ANSI_NULLS {ON | OFF}

Remarks
The SQL-92 standard requires that an equals (=) or not equal to (<>) comparison against a null value evaluates to FALSE. When SET ANSI_NULLS is ON, a SELECT statement using WHERE column_name = NULL returns zero rows even if there are null values in column_name. A SELECT statement using WHERE column_name <> NULL returns zero rows even if there are nonnull values in column_name.
.....
__________________
"El hombre, en su orgullo, creó a Dios a su imagen y semejanza."
Friedrich Nietzsche
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 02:53.