Función definida como valor predeterminado en un campo

02/03/2005 - 12:33 por . | Informe spam
Hola amigos,

He creado una Función definida que devuelve un valor float, en una tabla que
ya tengo creada, quiero añadir un nuevo campo cuyo valor por defecto sea el
que devuelve esta función, ¿se puede hacer?, he intentado desde el
administrador corporativo de SQL en la sección 'Valores predeterminados'
crear un nuevo valor predeterminado que utilice esta función, pero siempre
me salta el error de que sólo se permiten expresiones, constantes o
variables, como valor pongo dbo.MiFuncion.

Muchas gracias

Preguntas similare

Leer las respuestas

#1 Gustavo Larriera [MVP]
02/03/2005 - 13:53 | Informe spam
No es permitido usar una funcion para asignar un valor por defecto a un
campo. Pero puedes implementar un trigger de INSERT que haga el trabajo.


Gustavo Larriera, MVP
Uruguay LatAm
http://sqljunkies.com/weblog/gux/
Este mensaje se proporciona "COMO ESTA" sin garantias y no otorga ningun
derecho / This posting is provided "AS IS" with no warranties, and
confers no rights.



"." wrote in message news::
Hola amigos,

He creado una Función definida que devuelve un valor float, en una tabla
que
ya tengo creada, quiero añadir un nuevo campo cuyo valor por defecto sea
el
que devuelve esta función, ¿se puede hacer?, he intentado desde el
administrador corporativo de SQL en la sección 'Valores predeterminados'

crear un nuevo valor predeterminado que utilice esta función, pero siempre

me salta el error de que sólo se permiten expresiones, constantes o
variables, como valor pongo dbo.MiFuncion.

Muchas gracias
Respuesta Responder a este mensaje
#2 Tinoco
02/03/2005 - 14:11 | Informe spam
Hola,

Esto si se puede, pero la función no puede ser deterministica (El valor
resultante se debe poder asumir).

Intenta creando una funcion simple, que devuelve un valor, algo como:

CREATE FUNCTION vlor_default()
RETURNS INT AS
BEGIN
declare @v int
set @v = 1* 15
Return @v
END

Y luego asignas la funciona a la columna, así:

default: dbo.vlor_default()

Hermilson Tinoco
Colombia

"." wrote:

Hola amigos,

He creado una Función definida que devuelve un valor float, en una tabla que
ya tengo creada, quiero añadir un nuevo campo cuyo valor por defecto sea el
que devuelve esta función, ¿se puede hacer?, he intentado desde el
administrador corporativo de SQL en la sección 'Valores predeterminados'
crear un nuevo valor predeterminado que utilice esta función, pero siempre
me salta el error de que sólo se permiten expresiones, constantes o
variables, como valor pongo dbo.MiFuncion.

Muchas gracias



Respuesta Responder a este mensaje
#3 Alejandro Mesa
02/03/2005 - 14:33 | Informe spam
Aqui tienes varios ejemplos de funciones, deterministicas y no
deterministicas, definidas por el usario que son usadas como default values.
Puedes postear la funcion?


Ejemplo:

use northwind
go

create view myview
as
select getdate() as colA
go

create function dbo.myfunc (
)
returns float
as
begin
return (pi())
end
go

create function dbo.myfunc1 (
)
returns datetime
as
begin
return (select top 1 colA from myview)
end
go

create function dbo.myfunc2 (
)
returns char(1)
with schemabinding
as
begin
return ('A')
end
go

select
objectproperty(object_id('dbo.myfunc'), 'IsDeterministic'),
objectproperty(object_id('dbo.myfunc1'), 'IsDeterministic'),
objectproperty(object_id('dbo.myfunc2'), 'IsDeterministic')
go


create table t (
colA float default(dbo.myfunc()),
colB datetime default(dbo.myfunc1()),
colC char(1) default(dbo.myfunc2())
)
go

insert into t default values
go

select * from t
go

drop view myview
go

drop table t
go

drop function myfunc, myfunc1, myfunc2
go


AMB

"." wrote:

Hola amigos,

He creado una Función definida que devuelve un valor float, en una tabla que
ya tengo creada, quiero añadir un nuevo campo cuyo valor por defecto sea el
que devuelve esta función, ¿se puede hacer?, he intentado desde el
administrador corporativo de SQL en la sección 'Valores predeterminados'
crear un nuevo valor predeterminado que utilice esta función, pero siempre
me salta el error de que sólo se permiten expresiones, constantes o
variables, como valor pongo dbo.MiFuncion.

Muchas gracias



Respuesta Responder a este mensaje
#4 .
02/03/2005 - 16:34 | Informe spam
Hola de nuevo,

Esta es mi función

CREATE FUNCTION FactorVenta()
RETURNS float AS
BEGIN
Declare @Factor as float
Set @Factor = (Select Valor from PedConfiguracion Where Parametro =
'FactorVenta')
Return (@Factor)
END

Lo que hace es capturar un valor de un campo dentro de una tabla de
configuración, para luego a la hora de insertar una nueva fila en otra
tabla, el campo requerido tome por defecto este valor.
Por supuesto que se puede hacer con un trigger, pero no me sirve, porque
tendría que volver a cargar los datos de nuevo en el cliente para mostrar el
campo actualizado.

Muchas gracias
Respuesta Responder a este mensaje
#5 Alejandro Mesa
02/03/2005 - 16:43 | Informe spam
Tratastes de hacerlo usando T-SQL desde el QA?
Algun error?


AMB


"." wrote:

Hola de nuevo,

Esta es mi función

CREATE FUNCTION FactorVenta()
RETURNS float AS
BEGIN
Declare @Factor as float
Set @Factor = (Select Valor from PedConfiguracion Where Parametro =
'FactorVenta')
Return (@Factor)
END

Lo que hace es capturar un valor de un campo dentro de una tabla de
configuración, para luego a la hora de insertar una nueva fila en otra
tabla, el campo requerido tome por defecto este valor.
Por supuesto que se puede hacer con un trigger, pero no me sirve, porque
tendría que volver a cargar los datos de nuevo en el cliente para mostrar el
campo actualizado.

Muchas gracias



Respuesta Responder a este mensaje
Ads by Google
Help Hacer una preguntaSiguiente Respuesta Tengo una respuesta
Search Busqueda sugerida