2011-09-01 61 views
19

Tôi đã di chuyển một cơ sở dữ liệu từ oracle, và bây giờ có một vài hàm có giá trị vô hướng.Gọi hàm vô hướng trong SQL

Tuy nhiên, khi tôi gọi cho họ, tôi nhận được một lỗi nói:

Không thể tìm thấy một trong hai cột "dbo" hoặc chức năng người dùng định nghĩa hoặc tính gộp "dbo.chk_mgr", hoặc tên là mơ hồ.

Tôi gọi nó như thế này:

SELECT dbo.chk_mgr('asdf') 

Tôi đang làm gì sai?

+1

Bạn có thể hiển thị cho chúng tôi câu lệnh 'CREATE' cho hàm được đề cập không? –

+2

Ngoài ra, khi bạn nói rằng bạn đang gọi nó, làm thế nào/bạn đang gọi nó từ đâu? Có lẽ bạn đang chỉ vào DB sai mà không nhận ra nó? –

+0

Tôi vừa gặp sự cố này. @ TomH bình luận là câu trả lời đúng. Câu trả lời bình chọn hàng đầu là một cá trích đỏ cho tôi từ đó (như câu hỏi nói) Tôi đã thực sự sử dụng một hàm có giá trị vô hướng. –

Trả lời

17

Bạn có chắc chắn đây không phải là Table-Valued Function?

Lý do tôi hỏi:

CREATE FUNCTION dbo.chk_mgr(@mgr VARCHAR(50)) 
RETURNS @mgr_table TABLE (mgr_name VARCHAR(50)) 
AS 
BEGIN 
    INSERT @mgr_table (mgr_name) VALUES ('pointy haired boss') 
    RETURN 
END 
GO 

SELECT dbo.chk_mgr('asdf') 
GO 

Kết quả:

Msg 4121, Level 16, State 1, Line 1 
Cannot find either column "dbo" or the user-defined function 
or aggregate "dbo.chk_mgr", or the name is ambiguous. 

Tuy nhiên ...

SELECT * FROM dbo.chk_mgr('asdf') 

mgr_name 
------------------ 
pointy haired boss 
6

Đó cú pháp hoạt động tốt đối với tôi:

CREATE FUNCTION dbo.test_func 
(@in varchar(20)) 
RETURNS INT 
AS 
BEGIN 
    RETURN 1 
END 
GO 

SELECT dbo.test_func('blah') 

Bạn có chắc chắn rằng chức năng tồn tại như một chức năng và thuộc schema dbo?

+1

có, nó nằm trong thư mục hàm có hàm lượng vô hướng, dưới hàm ... –

12
PRINT dbo.[FunctionName] ([Parameter/Argument]) 

ví dụ .:

PRINT dbo.StringSplit('77,54') 
-1

Đảm bảo bạn đã chọn đúng cơ sở dữ liệu. Bạn có thể chọn cơ sở dữ liệu chủ nếu bạn đang cố gắng chạy nó trong một cửa sổ truy vấn mới.

Các vấn đề liên quan