2012-11-30 40 views
7

thể trùng lặp:
Conversion failed when converting the nvarchar value ‘Internet Explorer 3 original’ to data type intThủ tục lưu trữ trả về một chuỗi?

Vì vậy, tôi đã tạo ra này thủ tục sau đây đơn giản lưu trữ:

CREATE PROCEDURE test 
AS 
BEGIN 
    RETURN 'works!' 
END 
GO 

sau đó tôi muốn thực hiện nó bằng cách bắn các tuyên bố sau:

EXEC test 

Tại sao tôi gặp lỗi sau đây?

Chuyển đổi không thành công khi chuyển đổi giá trị varchar 'hoạt động!' vào kiểu dữ liệu int.

Oh và btw, (khi nào) cần phải có câu lệnh GO vào cuối thủ tục được lưu trữ? Tôi đoán nó không có hiệu lực ở đây vì nó sẽ nhảy ra khỏi thủ tục khi tôi đang returing @out String của tôi.

+3

Hãy xem [Quay lại] (http://msdn.microsoft.com/en-us/library/ms174998.aspx). Bạn có thể muốn làm các công việc 'Chọn '!' ' – Manatherin

+1

Và liên quan đến câu hỏi của bạn về' GO', hãy xem http://stackoverflow.com/questions/2299249/what-is-the-use-of-go-in-sql -server-management-studio –

Trả lời

20

Sử dụng RETURN chỉ cho phép bạn quay trở lại một mã INTEGER

Bạn có thể cần phải chọn giá trị

CREATE PROCEDURE test 
    AS 
    BEGIN 
     SELECT 'works!' 
    END 

hoặc nếu bạn muốn gán vào một biến trong người gọi, sử dụng một tham số OUTPUT

CREATE PROCEDURE test 
    @outputVal VARCHAR(20) OUTPUT 
AS 
BEGIN 
    SET @outputVal = 'works!' 
END 

DECLARE @val VARCHAR(20) 
EXECUTE test @val OUTPUT 
+0

ooh đó là lý do tại sao, hah! cảm ơn bạn rất nhiều, bây giờ tôi có thể về nhà và tận hưởng cuối tuần của tôi :-) –

+1

Bạn cần phải 'SELECT @ val' ở phần cuối của thủ tục thứ hai để có được nó để đầu ra – bendecko

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