Có cách nào trong một thủ tục được lưu trữ để nó tham chiếu đến tên riêng của nó không? Nói rằng tôi muốn nó để in tên riêng của nó, nhưng không mã hóa cứng tên trong thủ tục được lưu trữ. Có cách nào lừa đảo để có được tên hoặc id từ bên trong các thủ tục chính nó mà không sử dụng tên thực tế để tìm thông tin?Quy trình lưu trữ MS/Transact-SQL có thể tra cứu tên riêng của nó không?
Trả lời
Hãy thử:
SELECT OBJECT_NAME(@@PROCID)
@@ PROCID trả về đối tượng ID của module SQL hiện hành. OBJECT_NAME dịch ID đối tượng thành tên của nó. Cả hai đều có sẵn từ ít nhất là phiên bản 7 đến 2008 của SQL Server.
Bạn đang tìm kiếm @@ PROCID và OBJECT_NAME tức
select @procName=OBJECT_NAME(@@PROCID)
Không có lý do gì bạn cũng không nên bỏ phiếu cho câu trả lời của bạn chỉ vì bạn đã bỏ lỡ vài giây. – TheTXI
Gents, tôi đang chạm vào :) –
Tên của proc/func
Select OBJECT_NAME(@@PROCID);
khác những thứ thú vị
Select * From sys.sysprocesses Where spid = @@SPID
Dưới đây là một số mã tinker tôi đã viết , chạy với cơ sở dữ liệu SQL Server 2005 để chạy với hàm OBJECT_NAME (@@ PROCID).
Chạy phần này đầu tiên, để tạo ra một bảng log
CREATE TABLE Diagnostics_Log
(
sprocName sysname,
WhenRun datetime,
Comment Varchar(160) NULL
)
- =========================== =============
Sau đó chạy T-SQL này để tạo một vài phiên bản của cùng một sproc, thêm một hậu tố số mỗi lần.
CREATE PROC dg_test_name_logging
@Comment Varchar(160)
AS
declare @Sprocname sysname
select @sprocName = OBJECT_NAME(@@PROCID)
PRINT @@PROCID
print @sprocname
insert into Diagnostics_Log VALUES (@sprocname, GetDate(), @Comment)
GO
- ========== Sau đó chạy phần này
exec dg_test_name_logging 'this is the first run'
WAITFOR DELAY '00:00:00:123'
exec dg_test_name_logging1 'this is my second comment'
WAITFOR DELAY '00:00:00:123'
exec dg_test_name_logging2 'yet another comment'
WAITFOR DELAY '00:00:02:123'
exec dg_test_name_logging3 'amazing'
WAITFOR DELAY '00:00:00:123'
exec dg_test_name_logging4 'I''ll be gobsmacked if this works'
WAITFOR DELAY '00:00:00:123'
exec dg_test_name_logging5 'It''s ALIVE !!!'
select * from Diagnostics_Log
thể có ích cho khai thác gỗ khi sprocs hoặc quan điểm được chạy hoặc truy cập.
object_name() tự nó không xác định giản đồ của đối tượng hiện tại. Để làm điều đó:
print object_schema_name(@@PROCID) + '.' + object_name(@@PROCID)
- 1. Tại sao cấu trúc có thể lưu trữ kích thước của riêng nó?
- 2. MongoDB có thể được lưu trữ trong quá trình không?
- 3. Tôi có thể có tham số OUTPUT tùy chọn trong quy trình được lưu trữ không?
- 4. Cách tìm tên JJI tra cứu EJB theo chương trình?
- 5. Máy chủ SQL có thể lưu trữ proc xác định tên của cha mẹ mình không?
- 6. Phương pháp cff Coldfusion có thể xác định tên riêng của nó không?
- 7. vùng chứa để tra cứu tên nhanh
- 8. Làm thế nào để lưu trữ bảng tra cứu số bằng Python (có nhãn)
- 9. Không thể tìm thấy thủ tục được lưu trữ, tuy nhiên có thể thực hiện nó
- 10. Tôi có thể tìm kiếm các kết quả quy trình được lưu trữ không?
- 11. Làm rõ về tra cứu tên C++
- 12. Có lưu trữ cookie riêng cho hai UIWebView không?
- 13. Kiểm tra quy trình lưu trữ mà không ảnh hưởng đến cơ sở dữ liệu
- 14. Làm thế nào để có được PID của quá trình bằng cách xác định tên quy trình và lưu trữ nó trong một biến để sử dụng thêm?
- 15. Tra cứu tên trong các mẫu C++
- 16. Tôi có thể sử dụng svchost.exe để lưu trữ các dịch vụ của riêng mình không?
- 17. Tìm tất cả quy trình con của quy trình .NET của riêng tôi/tìm hiểu xem liệu một quy trình cụ thể có phải là con của riêng tôi không?
- 18. Có thể lưu trữ CLR trong chương trình C không?
- 19. chức năng ActionScript có thể tìm ra tên riêng của nó không?
- 20. Ví dụ tốt về quy trình tra cứu mã bưu điện của Vương quốc Anh
- 21. Không thể cài đặt APK được lưu trữ trên máy chủ apache của riêng tôi
- 22. tra cứu tên đường dẫn trong Linux?
- 23. Ví dụ về đối tượng PHP có thể biết tên của nó không?
- 24. Quy trình tra cứu thuộc tính python hoạt động như thế nào?
- 25. tra cứu tên bảng trong PSQL
- 26. Tra cứu tên máy chủ từ Maven
- 27. Cách tốt nhất để kiểm tra quy trình được lưu trữ là gì?
- 28. Không thể gọi quy trình và chức năng lưu trữ oracle
- 29. Cách kiểm tra Hiệu suất Máy chủ SQL cho Quy trình được Lưu trữ
- 30. Cách sử dụng Quy trình được lưu trữ trong SqlCE
D'oh! Giây quá trễ. Touche! +1 –
+1 Hoạt động trên máy của tôi: Nhân tiện, @@ PROCID có hoạt động với tất cả các phiên bản của SQL Server không? Tôi có nghĩa là, ít nhất là cho SQL Server 2k/2k5/2k8? – Sung
Có, ít nhất 2000 trở lên. Không thể nhớ liệu điều này được sử dụng để làm việc trên 6,5 hoặc 7. –