Sqlserver
 sql >> Cơ Sở Dữ Liệu >  >> RDS >> Sqlserver

Tạo một hàm do người dùng xác định trong thủ tục lưu trữ trong SQL 2005

Về mặt kỹ thuật ... có bạn có thể nhưng điều đó không có nghĩa là bạn nên làm. Bạn sẽ phải cẩn thận về việc tránh các câu lệnh GO (chỉ sử dụng Exec cho mỗi lô) nhưng bạn có thể làm điều gì đó như:

SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
ALTER PROCEDURE dbo.Test
AS

Declare @Sql nvarchar(max)

Set @Sql = 'CREATE FUNCTION dbo.Foo
(   
)
RETURNS TABLE 
AS
RETURN 
(
    SELECT 0 As Bar
)'

Exec(@Sql)

Select * 
From dbo.Foo()


Set @Sql = 'Drop Function dbo.Foo'
Exec(@Sql)

Return
GO
Exec dbo.Test

Điều đó nói rằng, tôi thực sự khuyên bạn không nên sử dụng loại giải pháp này, đặc biệt nếu hàm bạn muốn là thứ hữu ích như hàm Split. Tôi khuyên bạn chỉ cần tạo UDF và sử dụng nó và để nó cho đến khi bạn có thể sử dụng lại.



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Nối hai bảng với hai cột SQL Server 2008 R2

  2. Tại sao tham gia bên trái của tôi không trả về null?

  3. Trình quản lý kết nối SSIS Excel không kết nối được với nguồn

  4. Làm cách nào để biết liệu SQLexception có bị ném do vi phạm khóa ngoại hay không?

  5. Làm cách nào để đặt chuỗi kết nối theo chương trình cho Entity-Framework Code-First?