2010-07-02 5 views
19

Tôi có biểu thức phức tạp tính toán giá trị từ ngày mà tôi phải sử dụng trên nhiều cột ngày.
Tôi có thể xác định hàm cục bộ tạm thời trong truy vấn của mình để tránh sao chép và dán biểu thức này hay không. ?Có thể định nghĩa một hàm cục bộ trong truy vấn TSQL không?

thích:

create MyLocalFunc(@ADate datetime) 
returns int as 
begin 
    blablabla 
end 

select 
    MyLocalFunc(col1), col2, MyLocalFunc(col3), col4, MyLocalFunc(col5) 
from 
    mytable 

Là một workaround, tôi biết tôi có thể làm một CREATE FUNCTION // DROP FUNCTION, nhưng tôi muốn tránh nó.

+0

Xem: http://stackoverflow.com/questions/981451/can-i-create-a-one-time-use-function-in-a-script- hoặc lưu trữ-thủ tục – Weasle

Trả lời

6

Không, không có cách nào - tạo/thả là lựa chọn duy nhất.

+0

Câu trả lời này đề cập đến một cách thức có thể: http://stackoverflow.com/a/981461/750216 –

0

Không, không phải cục bộ. Nhưng bạn có thể tạo một UDF trong cơ sở dữ liệu mà không phải truy cập bất kỳ dữ liệu nào để thực hiện phép tính của nó.

Tại sao không biến nó thành UDF vĩnh viễn?

1

Máy chủ SQL hỗ trợ anonymous blocks bằng cách đặt (các) truy vấn bên trong khối BEGIN/END, nhưng tôi chưa thể tìm thấy ví dụ mà ai đó đã xác định một hàm trong đó. Oracle có chức năng trong một thời gian ...

+0

Bạn có thể giải thích thêm về các khối ẩn danh trong SQL Server không? Liên kết đó bị hỏng và tôi không thể tìm thấy bất cứ điều gì bản thân mình. –