I have function for combobox.
ALTER FUNCTION [FN.USERNew]
(
@USER_ID INT
)
RETURNS TABLE
AS
RETURN
(
Select [USER_NAME] , username_Id From USER
WHERE USER_ID=@USER_ID
)
GO
I try to use above function in my stored procedure like below.
However, I get an error
Cannot Find either column"dbo" or the user -defined function or aggregate "dbo.FN.USERNew", or name is ambigous."
ALTER PROCEDURE DBO.[MY_STORED_PROCEDURE]
(
@USER_ID INT,
@PRODUCT_ID INT
)
AS
BEGIN
SELECT
PRODUCT_ID,
PRODUCT_NAME
DBO.FN.USERNew(USER_ID) AS PROBLEMHERE
FROM PRODUCT_TABLE
WHERE PRODUCT_ID=@PRODUCT_ID
END
So why i can not use my function in my stored procedure ?
You have to continue to quote the name using []
or ""
because .
is used to separate name parts:
ALTER PROCEDURE DBO.[MY_STORED_PROCEDURE]
(
@USER_ID INT,
@PRODUCT_ID INT
)
AS
BEGIN
SELECT
PRODUCT_ID,
PRODUCT_NAME
DBO.[FN.USERNew](USER_ID) AS PROBLEMHERE
FROM PRODUCT_TABLE
WHERE PRODUCT_ID=@PRODUCT_ID
END
See Database Identifiers .
However, this is a table valued function - which would more normally be used in the FROM
clause (possibly via APPLY
) - I'm not sure that SQL Server will let you use it in the SELECT
clause since it can return multiple columns and rows. I think you may want:
ALTER PROCEDURE DBO.[MY_STORED_PROCEDURE]
(
@USER_ID INT,
@PRODUCT_ID INT
)
AS
BEGIN
SELECT
PRODUCT_ID,
PRODUCT_NAME
ft.* AS PROBLEMHERE
FROM PRODUCT_TABLE pt
CROSS APPLY DBO.[FN.USERNew](pt.USER_ID) ft
WHERE pt.PRODUCT_ID=@PRODUCT_ID
END
The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.